在阅读recent MSDN Magazine article about the Task scheduler后,我希望(实际上非常兴奋)使用它将有利于我使用WCF生成的代理。
我希望得到以下一些好处:
IsCompleted
,让Task类从我的UI中抽象出操作的内部。但是 - 我似乎没有获得任何这些好处。
Task.Factory.FromAsync<>
进行的唯一重载如下所示。这立即开始执行webservice操作(如Fiddler所示),并且不允许我稍后开始调用。INotifyPropertyChanged
所以我无法将其绑定到UI。Sooo ....我只是在浪费时间试图让WCF生成的代理与任务一起工作 - 或者我错过了什么。
// WCF client
var client = new ShoppingCartClient();
// create task
var t = Task.Factory.FromAsync<GetOrderDetailsMsgOut>(
client.BeginGetOrderDetails(new GetOrderDetailsMsgIn()
{
OrderId = 12345
}, null, null),
client.EndGetOrderDetails);
t.ContinueWith(x =>
{
var order = x.Result.Order;
// do something with order
});
答案 0 :(得分:1)
作为Microsoft计划下一版C#的新Async功能的一部分,他们发布了CTP here,它与VS 2010 SP1兼容。
前段时间,我写了一篇关于其中一个与CTP捆绑在一起的样本的小博客文章,关于TaskWsdlImportExtension。