C# 如何等待此回调方法对返回数据执行逻辑?
所以我现在在Silverlight工作不幸的是这是第一次。我非常熟悉回调,但我不完全确定如何将此方法转换为同步方法,以便对订单数据执行逻辑 我经常被告知,进行同步是不明智的,但我的目标是检查XAML UI中的某些字段是否已修改,是否与数据库中存在的字段不同。然后提示更改的原因。如果有更好的办法,我很想知道 在VS 2013中,我使用的是Silverlight 5和.Net Framework 4.0 谢谢大家!!以下是异步订单提供程序: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
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”);
}
}
}
}
返回修改字段;
}
我想知道是否可以选择使用?“创建一个表示符合异步编程模型模式的一对开始和结束方法的任务。”因此,它将从开始和结束方法(调用和回调)创建一个任务,然后我就可以等待该任务了?看起来是这样的。至少值得一试。