我在c#中使用新的async/await工具时遇到了麻烦.这是我的场景:
static async Task<bool> ManageSomeRemoteTask(int Id, bool flag)
{
var result = await serviceClient.AuthenticateIdAsync(Id);
[... Setup Some Data ...]
await serviceClient.LongAndSlowRemoteCallAsync(Data);
}
static void SendATonOfJunkToSomeWebServiceThatDoesntSupportBatches
{
var myTasks = Dictionary<int, Task<bool>>();
while(IdsLeftToProcess > 0 )
{
Task<bool> t = ManageSomeRemoteTask(Id, true);
myTasks.Add(IdsLeftToProcess ,t);
myTasks[IdsLeftToProcess].Start();
IdsLeftToProcess --;
}
Task.WaitAll(myTasks.Values.ToArray()); //Wait until they are all done
[... Report statistics ...]
}
Run Code Online (Sandbox Code Playgroud)
我有一个问题,当我尝试运行它时,我在Start()上得到一个InvalidOperationException,错误消息" 可能没有在promise样式任务上调用Start. "此错误消息似乎没有出现在Google或Bing所以我不确定这意味着什么.这是我的头号问题,如何让它运行.我也尝试过TaskFactory.StartNew(),但是不明白如何将参数传递给我的方法.
我试图在我的代码中记录有关某些对象和类的状态的信息.并非所有类或库都使用序列化实现.所以我在属性上使用Reflection来写出状态的XML文档.不过,我有像内建类,有些对象(即字符串,日期,数字等)有打印出的类以有意义的方式将值ToString函数是一个挑战.但是对于其他类,调用ToString只是使用继承的基ToString来吐出对象类型的名称(例如Dictionary).在这种情况下,我想以递归方式检查该类中的属性.
因此,如果任何人都可以帮我反思要么弄清楚是否在属性上实现了ToString我正在看这不是基本方法或指出使用GetValue检索集合属性的正确方法我会很感激它.
Ĵ