最近、SharePoint Windows Phone の統合に取り組みました。通信には、sharepoint が提供する Web サービスを使用しました。
そこから、Windows phone は Web サービスへの非同期呼び出しのみをサポートし、残りのコード行の実行を開始し、応答を取得すると実行を開始することがわかりました。しかし、この場合、私のロジックが Web サービスの応答に依存していると仮定すると、Web サービスの非同期呼び出しを呼び出すことは役に立ちません。openreadcompleted またはこれらの種類のイベントなどにすべてのロジックを記述する必要があります。
これはすべてのシナリオで機能するわけではないので、通信用のクラス名 CustomTask を作成し、コードを以下に示します。
MainClass
{
foreach (Task t in tasks)
{
CustomTask objCustomTask = new CustomTask();
objCustomTask.IsTaskCompleted += new EventHandler<CustomEventArgs>(objCustomTask_IsTaskCompleted);
objCustomTask.sortTasks(t.ID, t);
}
}
public class CustomTask
{
public event System.EventHandler<CustomEventArgs> IsTaskCompleted;
CustomEventArgs objCustomEventArgs = new CustomEventArgs();
WorkflowService.WorkflowSoapClient ws = new WorkflowService.WorkflowSoapClient();
public void sortTasks(String id, Task t)
{
objCustomEventArgs.objTask = t;
ws.CookieContainer = Login.cookieJar;
ws.GetWorkflowDataForItemAsync("TaskName");
ws.GetWorkflowDataForItemCompleted += new EventHandler<WorkflowService.GetWorkflowDataForItemCompletedEventArgs>(ws_GetWorkflowDataForItemCompleted);
}
void ws_GetWorkflowDataForItemCompleted(object sender, WorkflowService.GetWorkflowDataForItemCompletedEventArgs e)
{
objCustomEventArgs.IsPendingTask = false;
XElement objxelement = e.Result;
IEnumerable<XElement> objXElementColl = objxelement.Descendants(XName.Get("ActiveWorkflowsData", Constant.strWorkflowList));
foreach (XElement objXElementWorkflowTemplate in objXElementColl)
{
XElement objXElementWorkflows = objXElementWorkflowTemplate.Element(XName.Get("Workflows", Constant.strWorkflowList));
if (objXElementWorkflows != null && objXElementWorkflows.HasElements == false)
{
objCustomEventArgs.IsPendingTask = true;
}
}
IsTaskCompleted(sender, objCustomEventArgs);
}
public List<Task> GetPendingTask()
{
return null;
}
}
私の仕事は終わりましたが、いくつか質問があります。
私が使用した方法は、アプリケーションのパフォーマンスに影響しますか?
非同期呼び出しは、3 層アーキテクチャを実装できないことを意味しますか?
同期呼び出しがサポートされていない理由。