2012-02-24 31 views
0

尋找其他人對這個原因的想法我無法想出任何聰明的東西。從BackgroundWorker,.NET 3.5檢索結果時防止UI延遲

我有一個日誌文件,我讓用戶通過字符串匹配進行搜索。據推測,這個日誌文件可能會變得很大,所以我決定在BackgroundWorker上運行搜索並將匹配字符串數組返回到我的主UI上的RichTextBox。

我讓我的日誌大約一百萬行,讓它撕裂。起初,我以爲我的線程並沒有真正執行過的主要過程,但後來我意識到搜索操作是非常快,它正在更新這是採取10+秒做GUI:

if (e->Error != nullptr) 
     { 
     MessageBox::Show(e->Error->Message); 
     } 
     else 
     if (e->Cancelled) 
     { 

     } 
     else 
     { 
      try 
      { 
      // This is the line that kills me 
      log_textBox->Lines = dynamic_cast<array<String^>^>(e->Result); 
      if(log_textBox->Lines->Length == 0) 
        log_textBox->Text = "No Matches Found."; 
      } 
      catch(Exception^ e) 
      { 

      } 
     } 

加載在文本框中產生的數組是什麼凍結我的用戶界面。無論如何要用可能的大量數據更新界面而不會被鎖定?

回答

0

Textbox類不適用於顯示大量數據(請查看記事本)。

您是否考慮過在VirtualMode中使用ListView?