public Page() { InitializeComponent(); MySynchronizationContext ctx = new MySynchronizationContext(this.Dispatcher); DataBinder.AddCompiledBinding(tDefault, "Tool.AssemblyPath", t1, "Tool.DefaultPath", ctx); DataBinder.AddCompiledBinding(tDefault, "Tool.AssemblyPath", t2, "Tool.DefaultPath", ctx); }
private void Button_Click_1(object sender, RoutedEventArgs e) { //test binding on another thread ToolConfig tc = new ToolConfig(); MySynchronizationContext ctx = new MySynchronizationContext(this.Dispatcher); DataBinder.AddCompiledBinding(tc, "DefaultPath", tDefault, "Tool.AssemblyPath", ctx); ThreadPool.QueueUserWorkItem(delegate { tc.DefaultPath = "my test default"; }); }
static void Main(string[] args) { Logger.Info("Hello World!"); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; CustomTaskScheduler scheduler = new CustomTaskScheduler(); MySynchronizationContext context = new MySynchronizationContext(); //SynchronizationContext.SetSynchronizationContext(context); //Task.Factory.StartNew(Hello, "A:", new CancellationToken(), TaskCreationOptions.None, scheduler); //Task.Factory.StartNew(Hello, "B:", new CancellationToken(), TaskCreationOptions.None, scheduler); //Task.Factory.StartNew(Hello, "C:", new CancellationToken(), TaskCreationOptions.None, scheduler); Task.Factory.StartNew(Hello, "PoolA:", new CancellationToken(), TaskCreationOptions.None, TaskScheduler.Default); //Task.Factory.StartNew(Hello, "PoolB:", new CancellationToken(), TaskCreationOptions.None, TaskScheduler.Default); //Task.Factory.StartNew(Hello, "PoolC:", new CancellationToken(), TaskCreationOptions.None, TaskScheduler.Default); //Hello("E"); MyTask.Run(HelloMyTask, "I"); //MyTask.Run(HelloMyTask2, "有返回值:"); Log("Main"); while (Console.KeyAvailable == false) { GC.Collect(); GC.WaitForPendingFinalizers(); scheduler.Update(); //myTaskScheduler.Update(); s_WaitOneFrameTasks.Update(); //context.Update(); } ref StructA a = ref alist[0];
public MainWindow() { InitializeComponent(); _synchronizationContext = new MySynchronizationContext(SynchronizationContext.Current); }