ShowDialog不阻止执行代码,但阻止UI

347

当我使用ShowDialog()显示表单时,它会阻止UI和代码,但是我只需要阻止UI而不是代码。

letturalog can3 = new letturalog();
                    (new System.Threading.Thread(() => {
                        can3.ShowDialog();
                    })).Start();

此模式不会阻止代码和UI。

所以我想知道你能否做到

伊恩·博伊德(Ian Boyd)

如果您不想阻止代码,那么您想致电 .Show

换句话说,您想要:

can3.Show(this);
this.Enabled = false; //disable the form so the UI is blocked

//...do our stuff now that code is not blocked while the UI is blocked

//All done processing; unblock the UI:
this.Enabled = true;

实际上,这就是所有ShowDialog操作:禁用该表单,然后重新启用它。在伪代码中:

void ShowDialog(IWindowHandle Owner)
{ 
   this.Show(Owner);

   try
   {
      //Disable the owner form 
      EnableWindow(Owner, false);

      repeat
      {
         Application.DoEvents();
      }
      until (this.DialogResult != DialogResult.None);
   }
   finally
   {
      //Re-enable the UI!
      EnableWindow(owner, true);
   } 
}

您可以窃取所有这些概念,并用所需的任何东西替换胆量:

void DoStuffWithTheThing()
{ 
   can3.Show();

   try
   {
      //Disable the owner form 
      this.Enabled = false;

      //todo: Solve the P=NP conjecture
   }
   finally
   {
      //Re-enable the UI!
      this.Enabled = true;
   } 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

阻止此代码的瞬时执行?

来自分类Dev

Android sleep()而不阻止UI

来自分类Dev

当线程被内部锁阻止时执行代码

来自分类Dev

如何在不阻止UI的情况下执行繁重的同步操作?

来自分类Dev

ShowDialog不会阻止父表单

来自分类Dev

等待DataReceived触发而不阻止ui

来自分类Dev

为什么在playframework renderbinary之后最终不阻止执行?

来自分类Dev

异步/等待for循环NodeJS不阻止循环执行

来自分类Dev

Powershell最终阻止在Windows Task Scheduler中不执行

来自分类Dev

IJulia.notebook() 命令不执行并阻止终端

来自分类Dev

系统verilog:如果循环内部总是阻止不执行

来自分类Dev

有关代码执行和javascript阻止/非阻止的性质的问题

来自分类Dev

是什么原因阻止了执行onEdit()的这段代码?

来自分类Dev

Java模态对话框不会阻止代码执行

来自分类Dev

libsdl类消耗所有JVM(阻止代码执行)

来自分类Dev

对话框会阻止其余代码执行吗?

来自分类Dev

异步方法正在阻止正在执行的UI线程

来自分类Dev

在onClick之后正确更新RealmModel而不阻止Android中的UI

来自分类Dev

是否可以异步重绘网站(不阻止UI)?

来自分类Dev

尝试在任务中嵌套任务以不阻止UI线程

来自分类Dev

阻止执行直到条件

来自分类Dev

LWJGL glGenVertexArrays()阻止执行

来自分类Dev

CancellationToken阻止线程执行

来自分类Dev

阻止执行.mouseout事件

来自分类Dev

阻止执行动作

来自分类Dev

<Span>不阻止文本

来自分类Dev

iptables 不阻止用户

来自分类Dev

如何在应用启动时处理UI阻止代码

来自分类Dev

javascript阻止CSS代码