Application.Invoke
スペースを節約するために削除した foreach ループ内で発生します。がbwSearchEngines
完了すると、UI は 内のコードで更新されますInvoke
。これはどのように修正できますか?インボークが呼び出されるたびに更新する必要があります。これは、削除した foreach ループ内で呼び出されます。
ボタンが押されると、タスクを開始するボタン クリック イベントが発生します。
lblStatus
はステータスバーのラベル、はtvResults
、ボタン クリック イベントです。TreeView
OnBtnSearchClicked
明確にするために、私はWindows ではなく Debian wheezy で Gnome 3.4.2 を実行しています。これは Windows アプリではありません。MonoDevelop 3.0.3.2とGtk# 2.12を使用しています
public void bwSearchEngines()
{
//a couple foreach loops removed to save space
Application.Invoke(delegate {
lblStatus.Text = (engines.listSearchSesults.Count+1).ToString();
tvResults.Model = lsTorrents;
});
}
protected void OnBtnSearchClicked (object sender, EventArgs e)
{
lsTorrents.Clear(); //first remove data from TreeView before populating it
btnSearch.Visible = false; //when a search is started disable search button
Task.Factory.StartNew( () => {
bwSearchEngines();
}).ContinueWith(_ => btnSearch.Visible = true);
}