WPF多线程打开窗口,结束线程后窗口无法自动关闭

有一个读取文件的程序在读大文件的时候容易假死,我用多线程打开一个窗口显示“正在读取,请稍后”,当文件读取完了之后再用abort()和join()方法结束进程,但是后弹出的... 有一个读取文件的程序在读大文件的时候容易假死,我用多线程打开一个窗口显示“正在读取,请稍后” ,当文件读取完了之后再用abort()和join()方法结束进程,但是后弹出的窗口依然还在屏幕上显示,必须用鼠标点一下其他任意地方,显示“正在读取,请稍后” 窗口才会消失,请问如何解决这种问题?

public class Worker //多线程打开的窗口
{
// This method will be called when the thread is started.
public void DoWork()
{
DataProgress dataprogress1 = new DataProgress();
dataprogress1.Show();
System.Windows.Threading.Dispatcher.Run(); //不加这句窗口会闪现后消失
}
}

private bool readFile() //文件的读取
{
Worker workerObject = new Worker(); //打开窗口线程,窗口中显示“正在读取,请稍后”
Thread workerThread = new Thread(new ThreadStart(workerObject.DoWork));
workerThread.SetApartmentState(ApartmentState.STA);
workerThread.IsBackground = true;

//读文件的过程

for(。。。。。。)

//文件读完

workerThread.Abort();
workerThread.Join(); //此处线程是结束了,但是新打开的窗口无法自动关闭,随便点什么地方多线程新打开的窗口才会消失,不点就不会消失。该如何解决?
}
展开
 我来答
无隽秀0Gw3ba
推荐于2016-04-21 · TA获得超过4072个赞
知道大有可为答主
回答量:3934
采纳率:9%
帮助的人:1790万
展开全部
有三种方式,
1。记录所有线程启动线程,然后退出窗口结束时,所有这些线程

2将设置你线程后台线程(的IsBackground = TRUE),使窗口可以退出这些线程将自动结束。

3或System.Environment.Exit

1无情的点。最好的,但代码会多一点,以及应用程序的。退出是退出消息泵,关闭窗口,密切线程没有多大意义的。使用Environment.Exit
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式