Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任务内填充对象_C#_Task Parallel Library - Fatal编程技术网

C# 任务内填充对象

C# 任务内填充对象,c#,task-parallel-library,C#,Task Parallel Library,我开始了解第三方物流,现在有问题了。 我有一个在构造函数中启动任务的类工作者。我将这些任务与手动重置事件同步。但我想得到一些关于这方面的统计数据。所以我尝试在这个任务中填充对象。这是个好主意吗 public Worker(...) { ... StatisticItem = new StatisticItem(); .... Task = Task.Factory.StartNew(() => {

我开始了解第三方物流,现在有问题了。 我有一个在构造函数中启动任务的类工作者。我将这些任务与手动重置事件同步。但我想得到一些关于这方面的统计数据。所以我尝试在这个任务中填充对象。这是个好主意吗

 public Worker(...)
    {
       ...
        StatisticItem = new StatisticItem();
      ....

        Task = Task.Factory.StartNew(() =>
        {
           //Manual reset event
            WaitForSignalToStart.WaitOne();
            while (source.IsMyTurn(RepeatOrder))
            {
                Item item;
                var realTimeWatch = new Stopwatch();
                while (TryGetNext(out item))
                {
                   ...
                    DoWork()
                    StatisticItem.PlanItemId =...
                    StatisticItem.CommandAndQueryName =...
                    StatisticItem.WokrerId = ...
                    StatisticItem.ThreadId = ...
                    StatisticItem.Date = ...

                 }
        }, tokenSource.Token, TaskCreationOptions.LongRunning, TaskScheduler.Current);
    }

只要您只有一个任务访问此特定的
统计学家项目
,您就可以了。这是因为lamba语句能够使用在其中创建的上下文中的变量。

只要您只有一个任务访问此特定的
统计学家项目,您就可以了。这是因为lamba语句能够使用创建它们的上下文中的变量。

是的,您可以这样做,但是如果统计学家项目是一个字段,则只能有一个任务处于活动状态。此外,建议锁定
统计学家项目
是的,您可以这样做,但如果
统计学家项目
是一个字段,则只能有一个任务处于活动状态。此外,建议将统计学家项锁定为具有私有集的统计学家项。所以它需要锁定还是否?统计项的实例不是问题所在。它与您将要读写的统计项的属性有关。只要在两侧使用相同的对象实例,就需要使用来锁定任何对象(gui/任务)。在这种情况下,使用statisticsitem对象是一个合理的建议,但它可以是任何对象。statisticsitem是具有私有集的属性。所以它需要锁定还是否?统计项的实例不是问题所在。它与您将要读写的统计项的属性有关。只要在两侧使用相同的对象实例,就需要使用来锁定任何对象(gui/任务)。在这种情况下,使用statisticsitem对象是一个合理的建议,但它可以是任何对象。