2013-05-13 98 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