为什么函数不能以程序方式运行

时间:2017-07-14 10:54:17

标签: c# wpf

为什么函数不能以程序方式运行?我希望下面的代码首先显示 TextBox ,然后空闲3秒,然后隐藏 TextBox ,但应用程序只是睡了3秒而没有显示文本框

public Main()
{
   MyTextBox.Visibility = Visibility.Visible;
   Thread.Sleep(3000);
   MyTextBox.Visibility = Visibility.Hidden;
}


<小时/> [编辑1]
我无法真正找到解释为什么线程在文本框可见后没有睡眠的原因。 Thread.Sleep不应该在上一行MyTextBox.Visibility完成运行之前启动。因此,我的问题是:为什么声明不能按程序/顺序运行?

<小时/> [编辑2]
我可以理解downvotes但是我找不到来自&#34;复制&#34;的解释。的问题。 UI线程应该在 Thread.Sleep(3000)之前呈现我的 TextBox.Visibility ,但事实并非如此。

我最初想到UI线程应该如何:

  

Main() - &gt;初始化UI控件 - &gt;运行构造函数 - &gt;组   TextBox.Visibilily属性(可见) - &gt;渲染TextBox在GUI上可见 - &gt;   Thread.Sleep(3000) - &gt;设置TextBox.Visibility属性(隐藏) - &gt;   渲染隐藏在GUI上的TextBox

但实际上,该主题看起来更像是:

  

Main() - &gt;初始化UI控件 - &gt;运行构造函数 - &gt;组   TextBox.Visibilily属性(可见) - &gt;设置TextBox.Visibilily属性   (隐藏) - &gt; Thread.Sleep(3000) - &gt;渲染TextBox在GUI上可见 - &gt;给予   隐藏在GUI上的TextBox

1 个答案:

答案 0 :(得分:2)

它确实在同一个线程上同步运行,但UI线程不能同时睡眠并同时隐藏/显示TextBox

单个线程不能同时做两件事。