我看到的所有使用 SynchronisationContext.Post 的示例都在同一个类中使用过。我所拥有的是 UI 线程将一些 by-ref 参数传递给 threadwrapper 类,更新参数,然后我希望它更新 UIThread 上的一些标签等。
internal class ConnThreadWrapper
{
....
public event EventHandler<MyEventArgs<String, Boolean>> updateConnStatus =
delegate { };
public void updateUIThread(string conn, bool connected)
{
uiContext.Post(new SendOrPostCallback((o) =>
{
updateConnStatus(this,
new MyEventArgs<String, Boolean>(conn,
connected));
}),
null);
}
}
//on ui thread
public void updateConnStatus(object sender, MyEventArgs<String, Boolean> e)
{
switch (e.val1)
{
case "CADS" :
if (e.val2 == true)
{
}
事件似乎在没有任何错误的情况下触发,但在 uiThread 上没有收到任何内容 - 我不确定我对子 updateConnStatus 的签名是否正确,或者它是否像这样工作。我显然希望在 uithread 上处理该事件并更新该子的标签。
在以前的 vb.net 项目中,我曾经直接在线程上引用表单并使用委托来调用回调,但显然这是一个糟糕的设计,因为我正在混合应用程序层。我想使用同步上下文,因为它是线程安全的,但我见过的大多数示例都使用了调用。
有什么我想念的想法吗?谢谢