私はMonoDevelop(.net 2.0)を使用してiOSおよびAndroidアプリを開発しています。BeginGetResponseとEndGetResponseを使用して、バックグラウンドスレッドでWebリクエストを非同期的に実行します。
IAsyncResult result = request.BeginGetResponse(new AsyncCallback(onLogin), state);
ただし、コールバックonLogin
はまだバックグラウンドスレッドで実行されているようであり、UIを操作することはできません。どうすればこれを解決できますか?
AndroidとiOSに固有のソリューションがありますが、クロスプラットフォームソリューションが必要であることがわかります。
編集: mhutchの答えから私はこれまでに得ました:
IAsyncResult result = request.BeginGetResponse(o => {
state.context.Post(() => { onLogin(o); });
}, state);
状態に次のように設定されたcontext
タイプの変数が含まれている場合SynchronizationContext
SynchronizationContext.Current
Postには2つの引数が必要であり、2番目の引数は。であると文句を言いObject state
ます。挿入state
するとエラーが発生します
Argument `#1' cannot convert `anonymous method' expression to type `System.Threading.SendOrPostCallback' (CS1503) (Core.Droid)