我有一个线程从队列中取出数据并将其写入另一个应用程序的STDIN。我正在使用Stream,但是使用.Write甚至.BeginWrite,当我向第二个应用程序发送1mb块时,我的GUI会延迟~1秒。为什么?我的回调是这样的:
void Progress(object sender, ProgressArgs e) {
if (this.InvokeRequired) {
this.BeginInvoke(new MethodInvoker(delegate() { Progress(sender, e); }));
return;
}
progressBar1.Value = (int) e.PercentDone;
}
答案 0 :(得分:0)
我会说,你经常调用这些回调,以便用BeginInvoke
消息阻塞你的消息队列。尝试保存上次收到的百分比值,并仅在新的百分比与上一个不同时调用BeginInvoke
。