Tôi đã tạo một dịch vụ web trong .net 2.0, C#. Tôi cần phải đăng nhập một số thông tin vào một tập tin bất cứ khi nào các phương thức khác nhau được gọi bởi các máy khách dịch vụ web.Sự cố khi ghi vào một tệp trong dịch vụ Web trong .NET
Sự cố xảy ra khi một quá trình người dùng đang ghi vào một tệp và một quy trình khác cố gắng ghi vào tệp đó. Tôi nhận được lỗi sau:
The process cannot access the file because it is being used by another process.
Các giải pháp mà tôi đã cố gắng triển khai trong C# và không thành công như sau.
- Lớp singleton được triển khai có chứa mã viết vào tệp.
- Đã sử dụng câu lệnh khóa để bọc mã ghi vào tệp.
- Tôi cũng đã cố gắng sử dụng logger logger nguồn mở nhưng nó cũng không phải là một giải pháp hoàn hảo.
- Tôi biết về việc đăng nhập vào trình ghi sự kiện hệ thống, nhưng tôi không có lựa chọn đó.
Tôi muốn biết liệu có tồn tại một giải pháp hoàn hảo và hoàn chỉnh cho vấn đề như vậy không?
Mutex lockobj = new Mutex (sai, "mymutex"); sẽ biên dịch –
Bạn nên thử mở một Mutex hiện có với tên đó trước tiên trước khi tạo. Nếu không, dòng "Mutex mới (...)" có thể ném một ngoại lệ. Tôi cũng khuyên bạn nên sử dụng khối try/catch/finally, di chuyển lệnh Phát hành vào khối cuối cùng và chỉ phát hành nó nếu bạn thực sự có khóa. –