どこに問題がありますか?VolatileWriteブール値
bool stillSingleClick = false;
// does not compime
System.Threading.Thread.VolatileWrite(ref stillSingleClick, true);
'System.Threading.Thread.VolatileWrite(REF オブジェクト、オブジェクト)' の最良のオーバーロードされたメソッドの試合は、いくつかの無効な引数
私はなぜ尋ねるかを持っている..私次のように私のDoubleClickを区別しよう:
volatile bool stillSingleClick = false;
void SegmentLine_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
SegmentLine line = sender as SegmentLine;
if (e.ClickCount == 1)
{
stillSingleClick = true;
Thread thread = new Thread(
new System.Threading.ThreadStart(
delegate()
{
line.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
Thread.Sleep(System.Windows.Forms.SystemInformation.DoubleClickTime * 2);
if (stillSingleClick) // HERE ALWAYS TRUE!!!
{
SelectSegmentLine(line);
}
stillSingleClick = false;
}
));
}
));
thread.Start();
}
else if (e.ClickCount == 2)
{
stillSingleClick = false; // HERE SHOULD BE SET IN FALSE !!!
DisplaySegmentLineInfo(line);
}
}
は動作しませんstillSingleClick
は常にTrueになります....
揮発性フィールドで更新された説明 – serhio
+1 @cdhowieはい、intを使用するのが間違っていますが、機会に同じようにする必要があります。 TrueとFalseのconstを持たなければならないときは、さらに悪いと感じる場合: –
Jonのように、なぜ揮発性ブール値を使用しなかったのですか? – serhio