【发布时间】:2012-10-03 07:20:57
【问题描述】:
在我的 c# windows 应用程序中,
我有两个按钮导出和取消。
在我的导出按钮中,我将 sql 数据表导出到 .csv 文件。它在线程下运行。
thrThreadExportProcess = new Thread(new ThreadStart(startExport));
thrThreadExportProcess.Start();
thrThreadExportProcess.IsBackground = true;
当它的导出过程正在运行时,用户在这里点击取消按钮,我正在中止线程,然后加入线程并删除导出的文件。
当它加入线程时,应用程序会挂起一段时间然后它会运行。
我的问题是为什么它会挂断一段时间。
这里是取消按钮的部分代码。
if (thrThreadExportProcess.IsAlive)
{
thrThreadExportProcess.Abort();
thrThreadExportProcess.Join();
File.Delete(csvPath);
}
请提供您宝贵的建议。
【问题讨论】:
-
线程运行点有什么?我一直怀疑,如果检查没有足够快地结束,它会等待......然后等待......
-
无论如何都不推荐在线程上调用 Abort()。但我认为你根本不必(不应该)加入()之后。
-
嗨,BugFinder,我没有得到您的要求