0
我應該等待WinForms應用程序中的線程完成位置? FormClosed
/FormClosing
事件?哪一個是最適合這項任務的?我應該在WinForms應用程序中等待線程完成的位置
我有一個任務,定期檢查一些文件並向某個站點發出HTTP請求。這是我的應用程序的主要形式。該任務是可取消的,所以我想打斷它並等待一段時間完成。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
deviceDetectionTask = new CancellableTask(() => DeviceDetection());
}
// ...
private CancellableTask deviceDetectionTask;
}
public class CancellableTask
{
public CancellableTask(Action action)
{
task = Task.Factory.StartNew(action, ts.Token);
}
public void Cancel()
{
ts.Cancel();
}
private CancellationTokenSource ts = new CancellationTokenSource();
private Task task;
}
在此先感謝。
什麼線程?做什麼?你想做什麼,爲什麼?你嘗試過什麼,它是如何不符合你的期望的? – kai
@kai更新了問題 – FrozenHeart
這是一個非常模糊的問題,很難給出任何形式的明確答案。一般情況下(假設長時間工作的線程),我個人的偏好是在FormClosing中等待,因爲關閉操作可以在那裏取消。它需要一些棘手的邏輯來避免阻塞UI並將其變成全白窗口。 – xxbbcc