私は一連のasycメソッドをperticularシーケンスで呼び出す必要があります。問題は、すべてのメソッドがWCFサービスにリクエストを行うことです。 WCF呼び出しを行うメソッドは、プロジェクト全体に共通です。 WCF呼び出しのコールバック関数では、WCF呼び出しが成功したかどうかを判断します。 WCF呼び出しが成功した場合は、別のメソッドを呼び出す必要があります。順番に、1つ後に呼び出される多くのメソッドがあります。非同期メソッドの呼び出し - シーケンスの維持
private Action<string> action;
public void MakeHttpPostRequest(string webserviceURL, string json, Action<string> response)
{
try
{
this.action = response;
if (Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
Uri uri = new Uri(webserviceURL);
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(json);
string data = Encoding.UTF8.GetString(byteArray.ToArray(), 0, (int)byteArray.Length);
WebClient webClient = new WebClient();
webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(this.WebClient_UploadStringCompleted);
webClient.Headers["Content-type"] = "application/json";
webClient.Encoding = Encoding.UTF8;
webClient.UploadStringAsync(uri, "POST", data);
}
else
{
this.action(string.Empty);
}
}
catch (Exception ex)
{
new ErrorException.ErrorException().HandleError(ex, string.Empty, Global.Modules.General);
}
}
private void WebClient_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
try
{
// Check whether to invoke any method
if (this.action != null)
{
// Invoke the method passed to MakeHttpPostRequest by it's calling method
this.action(e.Result);
}
}
catch (Exception ex)
{
new ErrorException.ErrorException().HandleError(ex, string.Empty, Global.Modules.General);
}
}
私は、各メソッドごとに異なるコールバックイベントを記述し、次のメソッドを呼び出すことはお勧めできません。
私にはWCFのように見えませんか? Just Straight webclient。あなたはそれがどれであるかを明らかにすることができますか? – AnthonyWJones