使用しているコードがスレッド セーフかどうかを判断しようとしています。私は基本的に、異なるスレッドからメソッドを数回呼び出し、メソッド内の特定の呼び出しが完了するまでにかかる時間をキャプチャしようとしています。
これが私がやっていることの例です。
using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
namespace ThreadTest
{
class Program
{
static BlockingCollection<TimeSpan> Timer1 = new BlockingCollection<TimeSpan>(new ConcurrentBag<TimeSpan>());
static TimeSpan CaptureTime(Action action)
{
Stopwatch stopwatch = Stopwatch.StartNew();
action();
stopwatch.Stop();
return stopwatch.Elapsed;
}
static void ThreadFunction()
{
TimeSpan timer1 = new TimeSpan();
timer1 = CaptureTime(() =>
{
//Do Some Work
});
Timer1.Add(timer1);
}
static void Main(string[] args)
{
for (int i = 0; i < 50; i++)
{
var task = new Task(ThreadFunction);
task.Start();
}
}
}
}
そして、私が判断しようとしているのは、CaptureTime メソッドによって返される TimeSpan 値が信頼できるかどうかです。
私を啓発できる人に感謝します。