如何优先响应线程里的对话框?

takpod 2014-11-21 09:53:32
Thread myth = new Thread(new ParameterizedThreadStart(runpro));
myth.Start(this);
public void runpro(object obj)
{
((Form1)obj).test();
}
public void test()//Form1的成员函数
{
MessageBox.Show("1");
}



我在线程里调用了Form1对一个成员函数test,里面弹出对话框,我想此时阻塞其它所有线程,必须让用户点击确定才能返回主界面 应该怎么做
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forty2 2014-11-21
  • 打赏
  • 举报
回复
test方法改成:

public void test()//Form1的成员函数 
{
    if (this.InvokeRequired)
    {
        this.Invoke((Action)delegate { test(); });
        return;
    }
    MessageBox.Show("1");
}
takpod 2014-11-21
  • 打赏
  • 举报
回复
好吧~我无知~我不知有子线程回调这个东西
takpod 2014-11-21
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
这里捣什么乱,为什么要用线程?既然用子线程,又让主线程死等它?
因为我在子线程中遇到一个严重的错误,必须停下来让用户确认,才能往下操作
  • 打赏
  • 举报
回复
基本上,这是传统的“顺序程序思维”在作怪。而.net的await语法有更是容易误导了一些人、编写出性能恶劣的“所谓多线程”程序。 在设计上,当你进行多线程开发时,你的后续任务应该由子线程的回调触发。这是连 javascript 程序员都已经习惯了的程序设计风格。你的主线程该干什么还去干什么,而你这里能够想到要干的事情,不是主线程去干,而是注册为子线程的回调委托来完成。
  • 打赏
  • 举报
回复
这里捣什么乱,为什么要用线程?既然用子线程,又让主线程死等它?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧