タスク番号を追跡するために、コードの一部をスレッドセーフにする必要があるマルチスレッドアプリケーションを作成しています。
私はこの方法を持っています:
private void IncrementTaskNumber() {
Interlocked.Increment(ref _TaskNumber);
}
_TaskNumber は、同じクラスのプライベート int です。問題は、これにより「プロパティ、インデクサー、または動的メンバー アクセスが out または ref パラメーターとして渡されない可能性があります」という例外がスローされることです。これを回避するには、次のようにします。
private void IncrementTaskNumber() {
int _taskNum = _TaskNumber;
Interlocked.Increment(ref _taskNum);
_TaskNumber = _taskNum;
}
これはまだスレッドセーフですか?