2010-06-10 45 views
2

我有一個自動完成文本框,查看數據庫。有時我在打字時收到以下錯誤。自動完成文本框錯誤 - 寫入受保護的內存

試圖讀取或寫入受保護的內存。這通常表明其他內存已損壞。

下面是代碼

private void tBSearchName_TextChanged(object sender, EventArgs e) 
      { 
       try 
       { 
        //test length 
        if (tBSearchName.Text.Length > 3) 
        { 
         //prevent db lookups 
         if (!tBSearchName.Text.ToLower().Contains(oldName) || oldName == String.Empty) 
         { 
          //test for a name + first letter of last name 
          if (Regex.IsMatch(tBSearchName.Text, @"(\w)+\s(\w)+(\.)*")) 
          { 
           tBSearchName.AutoCompleteCustomSource = AccessDB.serachByNemberName(tBSearchName.Text); 
           tBSearchName.AutoCompleteMode = AutoCompleteMode.Suggest; 
           //prevent db lookups 
           oldName = tBSearchName.Text.ToLower(); 
          } 
         } 
        } 
       } 
       catch 
       { 
       } 
      } 

我的觀點是,我應該frezz輸入到應用程序中,而搜索完成後,可有人建議如何做到這一點。或者對正在發生的事情

回答

-1

任何其他見解,您可以使用lock

private void tBSearchName_TextChanged(object sender, EventArgs e) 
{ 
    lock(this) { /* do magic */ 
} 

請注意,這是不好的做法,在事件處理程序執行長時間任務。如果搜索時間超過30ms,最好使用worker thread

相關問題