小编Jas*_*son的帖子

在c#中启动许多异步任务的语法

我在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(),但是不明白如何将参数传递给我的方法.

c# task-parallel-library async-await

15
推荐指数
2
解决办法
8314
查看次数

有没有办法告诉对象是否在c#中显式实现了ToString

我试图在我的代码中记录有关某些对象和类的状态的信息.并非所有类或库都使用序列化实现.所以我在属性上使用Reflection来写出状态的XML文档.不过,我有像内建类,有些对象(即字符串,日期,数字等)有打印出的类以有意义的方式将值ToString函数是一个挑战.但是对于其他类,调用ToString只是使用继承的基ToString来吐出对象类型的名称(例如Dictionary).在这种情况下,我想以递归方式检查该类中的属性.

因此,如果任何人都可以帮我反思要么弄清楚是否在属性上实现了ToString我正在看这不是基本方法或指出使用GetValue检索集合属性的正确方法我会很感激它.

Ĵ

c# reflection serialization properties

6
推荐指数
1
解决办法
1206
查看次数