31 lines
948 B
C#
31 lines
948 B
C#
using System.Threading;
|
|
using System.Windows.Threading;
|
|
|
|
namespace GeekDesk.MyThread
|
|
{
|
|
public class DispatcherBuild
|
|
{
|
|
|
|
//创建一个Dispatcher来单独使用ui线程
|
|
public static Dispatcher Build()
|
|
{
|
|
Dispatcher dispatcher = null;
|
|
var manualResetEvent = new ManualResetEvent(false);
|
|
var thread = new System.Threading.Thread(() =>
|
|
{
|
|
dispatcher = Dispatcher.CurrentDispatcher;
|
|
var synchronizationContext = new DispatcherSynchronizationContext(dispatcher);
|
|
SynchronizationContext.SetSynchronizationContext(synchronizationContext);
|
|
|
|
manualResetEvent.Set();
|
|
Dispatcher.Run();
|
|
});
|
|
thread.IsBackground = true;
|
|
thread.Start();
|
|
manualResetEvent.WaitOne();
|
|
manualResetEvent.Dispose();
|
|
return dispatcher;
|
|
}
|
|
}
|
|
}
|