Application.Invoke
发生在 foreach 循环内,我将其删除以节省空间。完成bwSearchEngines
后,用户界面会使用Invoke
. 如何纠正?每次调用调用时它都需要更新,这在我删除的 foreach 循环中调用。
当按下按钮时,会发生按钮单击事件,从而启动任务。
lblStatus
是状态栏上的标签,tvResults
是TreeView
,并且OnBtnSearchClicked
是按钮单击事件
需要明确的是,我在 Debian wheezy 上运行 Gnome 3.4.2,而不是 Windows。这不是 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);
}