因此,這裏是我的代碼:DispatcherObject繼承和用法...我沒有得到什麼?
class Program
{
static DispatchClass dc;
[STAThread]
static void Main(string[] args)
{
dc = new DispatchClass();
Thread th = new Thread(AccessDC);
th.Start();
Console.ReadKey();
}
private delegate void AccessDCDelegate(object state);
static private void AccessDC(object state)
{
if(dc.Dispatcher.CheckAccess())
dc.Print("hello");
else
dc.Dispatcher.Invoke(new AccessDCDelegate(AccessDC));
}
}
public class DispatchClass : DispatcherObject
{
public void Print(string str)
{
Console.WriteLine(str);
}
}
現在...輸出我所期待的,這是所創建的線程檢查調度訪問,看到它是在不同的線程,然後調用AccessDC( ...)在原始線程上,然後檢查並看到它在正確的線程上並調用dc.Print(...)。
究竟發生了什麼,它得到CheckAccess()並正確地看到它不在正確的線程上,然後調用Invoke(...)並在那裏停止。
深入瞭解Dispatcher的工作方式將不勝感激。
謝謝。