1

我有线程在哪里下载 xml 文件和我想在其他类中解析的这个 xml 文件。现在我有准备线程,我可以在哪里下载它。在 MainForm 中我使用的是 WaitForSingleObject,但是这个函数冻结了 MainFrom,那么我怎样才能防止 reezing 并等待值呢?谢谢。

4

2 回答 2

3

首先,使用事件设计线程并使用 Synchronize 调用它们。

在 MainForm 中创建线程并为其分配事件处理程序:

Thread := TMyThread.Create(True);
Thread.OnDownload := DoDownload;
Thread.OnParse := DoParse;
// Other Events
Thread.Start;

您不应该在 MainForm 中等待*。避免使用 Windows 消息方法,因为您的应用程序将失去平台可移植性,只是链接到 WinXX 编译。

于 2012-07-02T13:17:13.020 回答
0

在主线程上等待并不是一个好的设计,但在某些情况下它可能是必要的。但是,在等待期间,您仍然需要处理进入线程的消息。

看看MSDN上的MsgWaitForMultipleObjects 。

于 2012-07-02T11:18:24.200 回答