bdfzwsd 2014-04-05 12:32
浏览 2411

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

有一个读取文件的程序在读大文件的时候容易假死,我用多线程打开一个窗口显示“正在读取,请稍后” ,当文件读取完了之后再用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();    ​    ​    ​//此处线程是结束了,但是新打开的窗口无法自动关闭,随便点什么地方多线程新打开的窗口才会消失,不点就不会消失。该如何解决?
      }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?