私のアプリはC#でカメラドライバのunmagedコードで呼び出されたメソッドを持っていますが、それはデリゲートを使って登録されています。私はこのメソッドが呼び出されるたびにカウントしたいと思います。アンマネージドコードコールバック - メソッドコールのカウント
サンプル:
bool firtTime;
uint counter;
//firtTime is reseted (set to true) in another method.
private void MyMethod()
{
if (firtTime)
{
counter = 0;
firtTime = false;
}
counter++;
//Do stuff
}
は私のアプローチはOKか私はカウンターに間違った値を得ることができますか?
それはインスタンスメソッドであるためInterlocked.Increment
でアトミックにする必要があるので、それはそれは同じインスタンスから呼び出された時間をカウントします。あなたが別のインスタンスを持っている場合は、カウンターが異なる – Steve
なぜ静的変数をInterlocked.Incrementで使用しないのですか? – brykneval
静的変数を使うことができます。ブロックする必要はありません。 – Prajwal