|
|
1
5
您可以使用BackGroundWorker组件,因为它将为您抽象一些线程部分。 |
|
|
2
5
需要注意的一件事是:是否有任何方法可以更改您试图从UI线程保存的数据结构?如果是这样的话,您应该在保存时禁用UI的这些方面——保存数据到一半(可能!)会很糟糕,然后允许用户更改其中的一些内容。如果您可以有效地将数据传递到后台线程,然后不从UI线程接触数据,那么您的生活就会轻松得多。 |
|
|
3
3
你的问题可能是有几种简单易行的方法。如果您只想设置文件保存,而不想知道文件保存何时完成,那么就有一个方法
我会做你想做的。 |
|
|
4
3
我建议您使用异步I/O。它的设置稍微容易一些,并且不需要您自己创建新线程。 例如,异步编程是指您有一个文件流要写入,但不想等待它完成。您可能希望在完成时收到通知,但不想等待。 你要做的是使用 BeginWrite / BeginRead EndWrite / EndRead 流类上可用的函数。 在方法中,首先调用BeginWrite,其中包含所有要写入的数据,并传入回调函数。当BeginWrite完成时,将调用此函数。 在回调函数中,调用EndWrite并清理流并检查错误。 BeginWrite不会阻塞,这意味着如果从事件处理程序中调用它,线程可以完成该处理程序并继续处理更多事件(如其他GUI事件)。
睡眠是非常重要的,因为如果主线程被终止,那么写东西的线程将被终止。这不是GUI应用程序中的问题,只是在这个小示例中。 MSDN有一个 pretty good overview 关于如何写这些东西,还有一些 good articles 在异步编程的一般情况下,如果你去 backgroundworker ThreadPool . |
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 2 年前 |
|
|
András Takács · Python多线程错误 2 年前 |