2015-01-26 3 views
1

Как я могу использовать FileIO.ReadTextAsync в универсальных приложениях Windows, чтобы он был потокобезопасным? Потому что пытаться что-то подобное, какThread safe async file writе with FileIO.ReadTextAsync

lock(lockObject) 
{ 
    var data = await ReadTextAsync(fileName); 
} 

, но с использованием await в lock не поддерживается = (.

+3

Зачем вам нужен «замок»? –

ответ

1

Использовать SemaphoreSlim и метод WaitAsync.

1

Это не поддерживается, поскольку нет (управляемые) резьб во время вызова ввода-вывода, и текущий метод будет продолжен позже, возможно, в другом потоке.

Блокировка - это синхронная концепция, и поскольку вы сериализуете доступ s уже, вы можете просто позвонить ReadText вместо ReadTextAsync? Вы действительно выигрываете от асинхронности в вашем случае?

+0

Умная идея просто не использовать async. +1 – usr