我有一些代码可以执行 Windows svc(另一个进程)并同时更新 UI。调用使用BeginInvoke
,如下所示:
Install.BeginInvoke((MethodInvoker) delegate { Install.Enabled = false; });
这是在DoWork
事件处理程序中。但是,用户界面仍然冻结。我需要打电话到Application.DoEvents
某个地方吗(如果需要,在哪里?)?我怎样才能消除冻结?
在按钮单击中,我有:
GetPrinterDto(DirectoriesTreeView.SelectedNode.Text);
InstallBackgoundWorker.RunWorkerAsync();
InstallBackgroundWorker
只需运行更新 UI 等的代码。
我想要做的是调用 WCF 服务器(托管在 Windows 服务中 - 这很好),但是当它关闭时,以异步方式更新进度条和带有任意值的标签。当我选择一个树节点时,所选树节点的事件处理程序被触发,这可能会导致一些减速。我会尝试把它放在它自己的后台工作人员中。