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))//在退出作用域之前,是否应该等待所有写入操作?这可能会阻止进程内的同时写入,但不会阻止某些外部进程锁定文件。可能是这样吗?信号量限制线程数,异步/等待不一定使用不同的线程。是否应该等待退出作用域之前,是否会执行所有写操作?这可能会阻止进程内同时进行写操作,但不会阻止某些外部进程锁定文件。可能是这样吗?信号量限制线程数,异步/等待不一定使用不同的线程。