我有这种情况,我尝试在创建事件的同一线程上处理事件。这通常在 UiThread 中完成,但我不在 UiThread 上开始。我有一些测试,基本上是以下步骤。我遗漏了一些细节。我不确定这是否应该像我认为的那样。
首先我检查当前线程的 Id
var myThreadId = Thread.CurrentThread.ManagedThreadId;
我创建了一个 SynchronizationContext 并设置为当前
var _context = new SynchronizationContext();
SynchronizationContext.SetSynchronizationContext(_context);
然后我向上下文发送一些动作(我们现在在另一个线程上)
_context.Send(x => _action(sender, e), null);
在此操作中,我再次检查 ThreadId
Assert.Equal(myThreadId, Thread.CurrentThread.ManagedThreadId);
这失败了。我不应该再次出现在我原来的线程上吗?