2013-05-13 67 views
0

我有一些代码产生了几个线程,并在它们上调用Run()方法。计算每秒结束的线程数

我想要做的是将一个定时器嵌入到该循环中,该循环启动线程并计算完成了多少个线程。

我想这样做的方式是每次运行IStuff时在列表中创建一个条目,然后每秒钟计算列表中有多少元素,从而生成每秒结果。

不知道我是否沿着正确的路线,但请建议如何做到这一点。

+0

你可以发布你到目前为止的代码吗?如果他们正在修改现有代码而不是从头开始,那么响应者将更容易为您提供有用的答案。 – AFischbein 2013-05-13 13:11:05

回答

1

所有你需要的是在一个共享作用域的变量,说int completionsPerSecond = 0 - 和你的Run()方法应该做的最后一件事就是增加它由1

然后你就会有一个计时器每一秒,拷贝值在completionsPerSecond向你展示你的价值,然后将completionsPerSecond设置为0.

现在每秒钟,你会知道在上一秒完成了多少次。

+0

是的,我所做的尽可能“增加一个”,我有麻烦,我应该从哪里运行计时器。我在foreach(t在线程)之前创建它并在循环内部调用它,或者我在循环之外调用它(因为它在一个单独的线程上运行,它会每秒都会跳动?) – dqm 2013-05-13 13:13:38

+3

如果您正在增加一个,你应该使用'Interlocked.Increment'。 – 2013-05-13 13:18:43

+1

在开始你的主工作负载之前,你可以使用一个你调用并启动的新System.Timer来启动它(它将在它自己的线程中运行)。 – PhonicUK 2013-05-13 13:19:09