C
Coder
I was expecting my DoWork method to be executed on the Run1 thread,
instead it is executed on the main thread. Why?
class Program
{
private static SynchronizationContext mT1 = null; // setting
it in Run1 thread
static void Main(string[] args)
{
int id = Thread.CurrentThread.ManagedThreadId;
Trace.WriteLine(id);
Thread t1 = new Thread(new ThreadStart(Run1));
t1.Start();
Thread.Sleep(10);
var context = mT1;
context.Send(DoWork, null);
}
static private void Run1()
{
mT1 = SynchronizationContext.Current;
int id = Thread.CurrentThread.ManagedThreadId;
Trace.WriteLine(id);
while (true)
Thread.Sleep(10000000);
}
static void DoWork(object state)
{
int id = Thread.CurrentThread.ManagedThreadId;
Trace.WriteLine(id);
}
}
instead it is executed on the main thread. Why?
class Program
{
private static SynchronizationContext mT1 = null; // setting
it in Run1 thread
static void Main(string[] args)
{
int id = Thread.CurrentThread.ManagedThreadId;
Trace.WriteLine(id);
Thread t1 = new Thread(new ThreadStart(Run1));
t1.Start();
Thread.Sleep(10);
var context = mT1;
context.Send(DoWork, null);
}
static private void Run1()
{
mT1 = SynchronizationContext.Current;
int id = Thread.CurrentThread.ManagedThreadId;
Trace.WriteLine(id);
while (true)
Thread.Sleep(10000000);
}
static void DoWork(object state)
{
int id = Thread.CurrentThread.ManagedThreadId;
Trace.WriteLine(id);
}
}