[commit] r2661 - trunk/SDK/DotNet/CSharpComponentWizard

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Fri Jan 27 13:01:44 CST 2017


Author: ksmyth
Date: Fri Jan 27 13:01:44 2017
New Revision: 2661

Log:
Fix COM Message Filter for worker thread

Modified:
   trunk/SDK/DotNet/CSharpComponentWizard/MainWindow.xaml.cs

Modified: trunk/SDK/DotNet/CSharpComponentWizard/MainWindow.xaml.cs
==============================================================================
--- trunk/SDK/DotNet/CSharpComponentWizard/MainWindow.xaml.cs	Fri Jan 27 09:11:04 2017	(r2660)
+++ trunk/SDK/DotNet/CSharpComponentWizard/MainWindow.xaml.cs	Fri Jan 27 13:01:44 2017	(r2661)
@@ -11,6 +11,7 @@
 using System.Linq;
 using System.Runtime.InteropServices;
 using System.Runtime.CompilerServices;
+using System.Threading;
 
 namespace CSharpComponentWizard
 {
@@ -157,14 +158,25 @@
             BackgroundWorker worker = new BackgroundWorker();
             worker.WorkerReportsProgress = true;
             worker.ProgressChanged += GenerationProgressChanged;
-            worker.DoWork += GenerationWork;
+            worker.DoWork += GenerationWorkWrapper;
             worker.RunWorkerCompleted += GenerationCompleted;
             worker.RunWorkerAsync();
         }
 
+        private void GenerationWorkWrapper(object sender, DoWorkEventArgs e)
+        {
+            Thread staThread = new Thread(() => GenerationWork(sender, e));
+            staThread.SetApartmentState(ApartmentState.STA);
+            staThread.Start();
+            staThread.Join();
+        }
+
         private void GenerationWork(object sender, DoWorkEventArgs e)
         {
             BackgroundWorker worker = sender as BackgroundWorker;
+            IMessageFilter oldFilter;
+            int ret = CoRegisterMessageFilter(new RetryMessageFilter(), out oldFilter);
+            // Debugger.Log(10, "debug", ret.ToString());
 
             try
             {


More information about the gme-commit mailing list