【发布时间】:2011-07-25 15:43:18
【问题描述】:
我正在尝试使用 BackgroundWorker 读取 XML 流:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
NetworkStream serverStream = clientSocket.GetStream();
XmlReader r = XmlReader.Create(serverStream);
while (r.Read())
{
output something using backgroundWorker1.ReportProgress object
}
}
我在按钮点击事件中使用backgroundWorker1.RunWorkerAsync(null) 调用它。
程序编译并运行良好,但进程停在XmlReader.Create。没有错误,但它说它无法评估表达式,因为本机框架位于调用堆栈的顶部。所以,它可能正在等待进程完成。
问题是,如果我直接通过鼠标单击而不使用 backgroundWorker 对象来执行此操作,则程序运行得很好。
有什么想法吗?谢谢。
【问题讨论】:
-
如何传递“clientSocket”?您是否 100% 确定它是相同的并且没有在 bgw 之外使用?
-
你能贴出调用代码吗(在 RunWorkerAsync(null) 附近)?
-
(在下面的 cmets 之后) - 发布所有与 clientSocket 相关的代码。没有它,这个问题就无法回答。
标签: c# xml backgroundworker xmlreader