Hence I can\'t use thread-affine locks with async - how can I guard my resources when running multiple processes?
For example I\'ve two processes that u
This guard works with async/await perfectly:
public sealed class AsyncLock : IDisposable
{
readonly AutoResetEvent Value;
public AsyncLock(AutoResetEvent value, int milliseconds = Timeout.Infinite)
{
if (value == null)
throw new ArgumentNullException("value");
value.WaitOne(milliseconds);
Value = value;
}
void IDisposable.Dispose()
{
Value.Set();
}
}
private async Task TestProc()
{
var guard = new AutoResetEvent(true); // Guard for resource
using (new AsyncLock(guard)) // Lock resource
{
await ProcessNewClientOrders(); // Use resource
} // Unlock resource
}