小编Yan*_*eau的帖子

并行执行任务

好吧,基本上我有一堆任务(10),我想同时启动它们并等待它们完成.完成后我想执行其他任务.我读了很多关于这方面的资源,但我无法理解我的具体案例......

这是我目前拥有的(代码已经简化):

public async Task RunTasks()
{
    var tasks = new List<Task>
    {
        new Task(async () => await DoWork()),
        //and so on with the other 9 similar tasks
    }


    Parallel.ForEach(tasks, task =>
    {
        task.Start();
    });

    Task.WhenAll(tasks).ContinueWith(done =>
    {
        //Run the other tasks
    });
}

//This function perform some I/O operations
public async Task DoWork()
{
    var results = await GetDataFromDatabaseAsync();
    foreach (var result in results)
    {
        await ReadFromNetwork(result.Url);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,当我等待任务完成时WhenAll,它告诉我所有任务都已结束,即使它们都没有完成.我尝试添加Console.WriteLine我的内容foreach,当我进入延续任务时,数据不断从我以前的Tasks中进入,并没有真正完成.

我在这做错了什么?

.net c# asynchronous task-parallel-library async-await

28
推荐指数
3
解决办法
5万
查看次数

过滤所有属性值上的对象数组

我真的很惊讶我找不到与我的问题相关的任何内容.我正在寻找一种基于用户文本输入过滤我的对象数组的快速方法.

假设我有这个数组:

let data = [{
  "id": 1,
  "first_name": "Jean",
  "last_name": "Owens",
  "email": "jowens0@google.ru",
  "gender": "Female"
}, {
  "id": 2,
  "first_name": "Marie",
  "last_name": "Morris",
  "email": "mmorris1@engadget.com",
  "gender": "Female"
}, {
  "id": 3,
  "first_name": "Larry",
  "last_name": "Wallace",
  "email": "lwallace2@example.com",
  "gender": "Male"
}];
Run Code Online (Sandbox Code Playgroud)

用户写"s",预期结果为:

let result = [{
  "id": 1,
  "first_name": "Jean",
  "last_name": "Owens",
  "email": "jowens0@google.ru",
  "gender": "Female"
}, {
  "id": 2,
  "first_name": "Marie",
  "last_name": "Morris",
  "email": "mmorris1@engadget.com",
  "gender": "Female"
}]
Run Code Online (Sandbox Code Playgroud)

我可以这样使用过滤功能:

let = searchText = "s";
    let result = data.filter(object=>{
      for …
Run Code Online (Sandbox Code Playgroud)

javascript arrays filter

5
推荐指数
1
解决办法
2341
查看次数

反序列化 newtonsoft 属性的动态对象名称

当我发送对某个 API 的请求时,它们返回给我一个很棒的 json,但问题是,根据我提供的参数,对象名称总是不同,而数据结构保持不变。所以我尝试使用 Newtonsoft 库将 json 转换为 C# 类。我发现做到这一点的唯一方法是使用 JsonTextReader,但我想知道是否有更干净的方法来实现此目的,我查找了文档,但找不到任何可以在这方面帮助我的内容。我还尝试使用 JValue.Parse 进行动态对象映射,但由于属性名称总是不同,所以它对我没有帮助。这是一个代码示例来说明该问题:

{
"error": [],
  "result": {
    //This property name always changes
    "changingPropertyName": [
      [
        "456.69900",
        "0.03196000",
        1461780019.8014,
      ]]
    }

//C# mapping
public partial class Data
{
    [JsonProperty("error")]
    public object[] Error { get; set; }

    [JsonProperty("result")]
    public Result Result { get; set; }
}

public class Result
{
    [JsonProperty("changingPropertyName")]
    public object[][] changingPropertyName{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# json json.net deserialization

3
推荐指数
1
解决办法
3762
查看次数