C#方法忽略异步等待?
我仍然得到C#方法忽略异步等待?,c#,asynchronous,C#,Asynchronous,我仍然得到System.IO.IOException告诉我该文件被用于另一个进程,即使我使用了asyncwait和SemaphoreSlimWaitAsync和Release建议。我不知道我做错了什么 在我的方法之外的课堂上,我有 private static SemaphoreSlim FileLock = new SemaphoreSlim(1); 使用async和wait public async void Write(params string[] text) {
System.IO.IOException
告诉我该文件被用于另一个进程,即使我使用了async
wait
和SemaphoreSlim
WaitAsync和Release
建议。我不知道我做错了什么
在我的方法之外的课堂上,我有
private static SemaphoreSlim FileLock = new SemaphoreSlim(1);
使用async
和wait
public async void Write(params string[] text)
{
try
{
await FileLock.WaitAsync();
using (StreamWriter sw = new StreamWriter(this.Source, true)) // <- IOException
{
for (int i = 0; i < text.Length; i++)
{
await sw.WriteAsync(text[i]);
}
}
}
finally
{
FileLock.Release();
}
}
公共异步无效写入(参数字符串[]文本)
{
尝试
{
wait FileLock.WaitAsync();
使用(StreamWriter sw=新StreamWriter(this.Source,true))//在退出作用域之前,是否应该等待所有写入操作?这可能会阻止进程内的同时写入,但不会阻止某些外部进程锁定文件。可能是这样吗?信号量限制线程数,异步/等待不一定使用不同的线程。是否应该等待退出作用域之前,是否会执行所有写操作?这可能会阻止进程内同时进行写操作,但不会阻止某些外部进程锁定文件。可能是这样吗?信号量限制线程数,异步/等待不一定使用不同的线程。