0
この作品待っています:作業が完了するまで、第1、さらにボタンのクリックをクリックした後SemaphoreSlimおよび非同期/
int _counter;
readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1);
async void Button_Click(object sender, RoutedEventArgs e)
{
if (_semaphore.Wait(0))
{
Title = $"{ ++_counter}";
await Task.Delay(1000); // simulate work
Title = $"{ --_counter}";
_semaphore.Release();
}
}
は無視されます。 Tittle
は1
または0
ことができます。
そして、これは継続的に
void Button_Click(object sender, RoutedEventArgs e)
{
if (_semaphore.Wait(0))
{
Test(); // moving code into separate method
_semaphore.Release();
}
}
async void Test()
{
Title = $"{ ++_counter}";
await Task.Delay(1000); // simulate work
Title = $"{ --_counter}";
}
クリックボタンがTittle
から2
、3
、というように上昇する動作しません。
私は間違っていますか?