【发布时间】:2013-02-21 08:48:57
【问题描述】:
我正在使用 MonoDevelop (.net 2.0) 开发 iOS 和 Android 应用程序。我使用 BeginGetResponse 和 EndGetResponse 在后台线程中异步执行 webrequest。
IAsyncResult result = request.BeginGetResponse(new AsyncCallback(onLogin), state);
但是,回调onLogin 似乎仍在后台线程上运行,不允许我与 UI 交互。我该如何解决?
可以看到有 Android 和 iOS 特定的解决方案,但想要一个跨平台的解决方案。
编辑:从 mhutch 的回答中我得到了这么多:
IAsyncResult result = request.BeginGetResponse(o => {
state.context.Post(() => { onLogin(o); });
}, state);
其中 state 包含一个 context 类型的变量 SynchronizationContext 设置为 SynchronizationContext.Current
它抱怨 Post 需要两个参数,第二个是 Object state。插入state 会出现错误
Argument `#1' cannot convert `anonymous method' expression to type `System.Threading.SendOrPostCallback' (CS1503) (Core.Droid)
【问题讨论】:
标签: c# multithreading user-interface .net-2.0 monodevelop