C# 如何等待此回调方法对返回数据执行逻辑?

C# 如何等待此回调方法对返回数据执行逻辑?,c#,asynchronous,silverlight,async-await,C#,Asynchronous,Silverlight,Async Await,所以我现在在Silverlight工作不幸的是这是第一次。我非常熟悉回调,但我不完全确定如何将此方法转换为同步方法,以便对订单数据执行逻辑 我经常被告知,进行同步是不明智的,但我的目标是检查XAML UI中的某些字段是否已修改,是否与数据库中存在的字段不同。然后提示更改的原因。如果有更好的办法,我很想知道 在VS 2013中,我使用的是Silverlight 5和.Net Framework 4.0 谢谢大家!!以下是异步订单提供程序: public void GetOrder(字符串ordNu

所以我现在在Silverlight工作不幸的是这是第一次。我非常熟悉回调,但我不完全确定如何将此方法转换为同步方法,以便对订单数据执行逻辑

我经常被告知,进行同步是不明智的,但我的目标是检查XAML UI中的某些字段是否已修改,是否与数据库中存在的字段不同。然后提示更改的原因。如果有更好的办法,我很想知道

在VS 2013中,我使用的是Silverlight 5和.Net Framework 4.0

谢谢大家!!以下是异步订单提供程序:

public void GetOrder(字符串ordNumber,操作回调)
{
String exStr=String.Format(“{0}.{1}()-->”收到的“,
这个.GetType().Name,
MethodBase.GetCurrentMethod().Name);
if(ordNumber==null)
{
抛出新的ArgumentNullException(“ordNumber”,exStr);
}
if(回调==null)
{
抛出新的ArgumentNullException(“回调”,exStr);
}
IOrderServiceAsync通道=CreateChannel();
AsyncCallback AsyncCallback=ar=>GetOrderCallback(回调,ar);
channel.BegingToOrderByrdNumber(ordNumber,asyncCallback.ThreadSafe(),channel);
}
下面是我正在用它做的:

tmModifiedFields()的公共列表检查 { if(!\u order.Stops.Items.Any(x=>x.ModelState==ModelState.Modified)) { 返回null; } List oldStop=新列表(); Provider.OrderProvider OrderProvider=new Provider.OrderProvider(); //希望将此方法转换为sync以提取订单信息进行比较 //orderProvider.GetOrder(_order.Item.OrdHdrNumber.ToString(),getResult=>OnGetOrderComplete(getResult)); List modifiedFields=新列表(); foreach(StopModel按顺序停止.Stops.Items) { if(stop.ModelState==ModelState.Modified) { foreach(Enum.GetNames中的字符串ATMFieldName(typeof(ATMFields))) { string beforeValue=“before value”;//应检查数据库中的值 字符串afterValue=stop.GetType().GetProperty(ATMFieldName).GetValue(stop,null).ToString(); 如果(前值!=后值) { modifiedFields.Add(新的ATMModifiedFieldModel(ATMFieldName、beforeValue、afterValue、stop.StpNumber、“stop”); } } } } 返回修改字段; }
我想知道是否可以选择使用?“创建一个表示符合异步编程模型模式的一对开始和结束方法的任务。”因此,它将从开始和结束方法(调用和回调)创建一个任务,然后我就可以等待该任务了?看起来是这样的。至少值得一试。