1
A
回答
1
是的,它们是相同的线程。你会想要产生一个新的线程来处理主要的处理。
下面的示例只是一个按钮,它会睡眠(10秒钟)主线程,一旦Button_Click被调用并且“睡眠”开始,整个UI变得无响应。
希望有所帮助。
的.xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Button" HorizontalAlignment="Left" Margin="231,142,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
</Grid>
的.cs
using System.Threading;
using System.Windows;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread.Sleep(10000);
}
}
}
编辑包括语法校正和采样/示例代码的解释。
1
我们称之为Application.Run
(或者你启动WPF的任何机制)的线程是UI线程。通常,这是您的应用程序启动的线程。
如果你想在不阻塞UI线程的情况下进行大量处理,你应该在新线程中完成。这里有一个例子:
private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
await Task.Run(() => Thread.Sleep(1000)); //Assume Thread.Sleep is your heavy processing
}
1
这取决于你在主线程中的意思。如果你的意思是运行Main()
的线程,那么这是可能的。你只需要产生它,使它成为STA,并拨打Application.Run()
,就像你在Main()
中做的那样。
此外,WPF可以有多个UI线程,因此有多个调度器。每个UI线程都可以访问仅从当前线程创建的元素(以及当前线程的分派器)。
如果您想避免阻塞UI线程,那么情况并非如此,请考虑使用async\await
来代替。
+0
所以每个UI都有自己独特的线程?或全部共享应用程序启动主线程? – MonsterMMORPG
相关问题
- 1. C#WPF应用程序中主线程的职责是什么?
- 2. Wpf应用程序和线程
- 3. 此代码是否在与主UI线程不同的线程中执行
- 4. UI线程和后台线程使用相同全局变量
- 5. C#跨线程。 IRC流线程到主UI线程
- 6. Android子线程调用主线程UI
- 7. 如何从线程更新WPF应用程序中的UI?
- 8. WPF - 完成和UI线程
- 9. WPF System.Timer和UI线程
- 10. 多线程COMObject和UI线程(C#)
- 11. C#winforms应用程序线程同步
- 12. 在主线程中处理wpf应用程序中的呼叫
- 13. 是否有从工作线程切换到主(UI)线程?
- 14. WPF中的多线程UI
- 15. 主(UI)线程是否发生回调?
- 16. NSURLConnection是否阻止主/ UI线程
- 17. C#应用程序线程
- 18. 应用程序时,从后台线程和主线程在同一时间
- 19. 单线程应用程序是否线程安全
- 20. 同步测试线程,UI线程和CursorLoader线程
- 21. 线程C#UI
- 22. c#windows应用程序中的线程
- 23. C++中的多线程应用程序
- 24. WPF C#线程
- 25. WPF线程C#
- 26. 线程执行是否在IDE中与C++中的EXE应用程序不同?
- 27. 多线程访问多线程应用程序中的相同代码
- 28. 一个线程在iPhone应用程序中杀死另一个线程(两个线程都是主线程)?
- 29. WPF主题与加入()块UI线程
- 30. C#windows应用程序中的两个UI线程
主线程是什么意思?这就是我们通常所说的UI线程。 –
@EmperorAiman我同意你的看法,但即使是我的大学讲师也感到困惑,并不知道:D – MonsterMMORPG