我正在使用 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)