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

问题描述

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();    ?    ?    ?//此处线程是结束了,但是新打开的窗口无法自动关闭,随便点什么地方多线程新打开的窗口才会消失,不点就不会消失。该如何解决?
      }
时间: 2024-11-10 07:45:31

wpf-WPF多线程打开窗口,结束线程后窗口无法自动关闭的相关文章

WPF 使用按钮打开一个page后,其余按钮失效

问题描述 WPF使用按钮打开一个page后,其余按钮失效,不知道什么原因 解决方案 解决方案二: 解决方案三:WPF运行过程中以UI线程为主,page运行时线程转到当前的page中执行了,其余的按钮可能是不可用的.还有一种可能就是界面的层级问题,page的层级有可能过高,覆盖在其他UI界面之上,之前的界面的控件就操作不了了.解决方案四:最好附上部分代码,或者你打断点调试,表面是看不出来的

[WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口

现象: 大家可以试试下面这个很有趣但会带来Defect的现象:当我们将子窗口按照ShowDialog()的方式显示出来的时候,很明显该窗口是模式化的(即主窗口等待该窗口的返回,主窗口将不相应用户输入),但如果此时将子窗口的Visibility设置成Visibility.Hidden来隐藏窗口,然后再将Visibility设置成Visibility.Visible来再次显示子窗口,此后子窗口便是非模式的了(即主窗口和子窗口一样相应用户输入) 案例: 当用户不操作软件达到一定的时间间隔后,软件会隐藏

java-请问以下程序 导出后第一天能用 第二天就只能打开窗口,线程部分就不能用了,求教

问题描述 请问以下程序 导出后第一天能用 第二天就只能打开窗口,线程部分就不能用了,求教 package project7;import java.awt.*; import java.util.*; import java.awt.event.*; import javax.swing.*;public class Class1{ JButton jb; JTextArea jta; public static void main(String[] args) { JButton jb=new

WPF的消息机制(三)- WPF内部的5个窗口之处理激活和关闭的消息窗口以及系统资源通知窗口

目录 WPF的消息机制(一)-让应用程序动起来 WPF的消息机制(二)-WPF内部的5个窗口 (1)隐藏消息窗口 (2)处理激活和关闭的消息窗口以及系统资源通知窗口 (3)用于用户交互的可见窗口 (4)用于UI窗口绘制的可见窗口 WPF的消息机制(三)-WPF输入事件的来源 WPF的消息机制(四)-WPF中UI的更新   处理应用程序激活和系统关闭的窗口(Window 2#) 创建时机:在调用Application.Run之后,运行到Application.EnsureHwndSource()方

java 多线程-为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开

问题描述 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开?? package com.miuitust.mutilethread; import java.io.File; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; impor

WPF中删除打开过的图片

原文:WPF中删除打开过的图片 在WPF中,当我们删除打开过的图片时,往往会遇到"...无法删除,文件正在被另一个进程使用"的异常.即使当前文件是打开后关闭过的也不行. 这个问题的原因很简单,是因为WPF的缓存策略导致图片被锁定了,解决的方式不是用默认的ImageSource的构造方法,改用如下方式:     ImageSource getImage(string file)    {        var bmp = new BitmapImage();        bmp.Beg

wpf窗口拖拽时 窗口内的一个控件的数量会随着 区域的大小而改变

问题描述 wpf窗口拖拽时 窗口内的一个控件的数量会随着 区域的大小而改变 WPF窗口在拖动时 怎样做到窗口中的控件的数量会根据区域的大小而变化 啊? 比如我窗口本来有一张图片 当窗口拉大时 显示3张图片. 有用到过的吗?? 解决方案 用UniformGrid布局http://www.cnblogs.com/libaoheng/archive/2011/11/19/2255558.html

《Java多线程编程核心技术》——1.1节进程和多线程的概念及线程的优点

1.1 进程和多线程的概念及线程的优点 本节主要介绍在Java语言中使用多线程技术.但讲到多线程这个技术时不得不提及"进程"这个概念,"百度百科"里对"进程"的解释如图1-1所示. 初看这段文字会觉得十分的抽象,难以理解,但如果你看到图1-2所示的内容,那么你对进程还不能理解吗? 难道可以将一个正在操作系统中运行的exe程序理解成一个"进程"吗?没错! 通过查看"Windows任务管理器"中的列表,完全可以

iOS多线程编程之一——NSThread线程管理

iOS多线程编程之一--NSThread线程管理 NSTread是iOS中进行多线程开发的一个类,其结构逻辑清晰,使用十分方便,但其封装度和性能不高,线程周期,加锁等需要手动处理. 一.NSThread类方法总结 获取当前线程 ? 1 + (NSThread *)currentThread; 这个方法通过开启一个新的线程执行选择器方法 ? 1 + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject: