Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理并发文件写入_C#_Asp.net_Linq_Concurrency - Fatal编程技术网

C# 处理并发文件写入

C# 处理并发文件写入,c#,asp.net,linq,concurrency,C#,Asp.net,Linq,Concurrency,我正在开发一个ASP.NET应用程序,它接受用户输入并将其序列化为文本文件。现在,当第二个更新请求在文件仍在编写时出现时,将生成IOException 如何处理此文件的并发更新请求 您可以实现生产者-消费者,其中主线程将对象添加到队列,消费者将队列写入磁盘。使用它将解决的锁 lock (this) { 将它们序列化为文本文件 }这比使用lock要好,因为写入线程不会被阻塞。您可以对日志消息使用线程安全队列,并运行单独的后台线程来使用队列并将消息写入文件。然后在consumer中,您还可以实现

我正在开发一个ASP.NET应用程序,它接受用户输入并将其序列化为文本文件。现在,当第二个更新请求在文件仍在编写时出现时,将生成IOException


如何处理此文件的并发更新请求

您可以实现生产者-消费者,其中主线程将对象添加到队列,消费者将队列写入磁盘。

使用它将解决的锁

 lock (this)
{ 将它们序列化为文本文件
}

这比使用lock要好,因为写入线程不会被阻塞。您可以对日志消息使用线程安全队列,并运行单独的后台线程来使用队列并将消息写入文件。然后在consumer中,您还可以实现滚动文件等功能。这非常有效,直到有人点击CTRL+C,队列中的所有数据被丢弃,而不是文件系统。