2009-10-29 35 views
5

Tôi đang xây dựng một chương trình C# để giải nén một tệp và làm việc trên tệp này.Làm thế nào để giết một quá trình C#?

Đôi khi tôi nhận được tin nhắn này: "quá trình không thể truy cập các tập tin c: .... vì nó đang được sử dụng bởi một quá trình"

Những gì tôi có thể làm gì? Làm thế nào để giết nó?

Trả lời

10

Bạn phải tìm hiểu xem chương trình nào đang truy cập tệp. Bạn đã quên thoát khỏi một trong các ứng dụng của riêng mình hay đang truy cập vào tệp nào khác?

Bạn có thể viết mã C# để giết một quá trình, nhưng cách tiếp cận tốt hơn là tìm hiểu lý do tại sao nó đang được sử dụng bởi một quy trình khác.

Để giết tất cả các quá trình với tên nameOfProcess trong C#:

Process[] ps = Process.GetProcessesByName("nameOfProcess"); 

foreach (Process p in ps) 
    p.Kill(); 

Ngoài ra, như ghi chú @Darin, bạn có thể có một cái nhìn tại này khác SO chủ đề: How do I find out which process is locking a file using .NET?

Các Sysinternals công cụ được đề cập bởi @Darin trong các nhận xét được tìm thấy tại http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

+2

Để tìm hiểu lúc đầu, người đang khóa tệp của bạn, bạn nên xem xét ProcessMonitor từ sysinternals. Chỉ cần nhấp vào Spyglass trên thanh công cụ và nhập tên tệp của bạn. Bạn nhận được một danh sách tất cả các quy trình có một xử lý mở cho tệp này. – Oliver

2

Trình theo dõi quá trình sẽ hoạt động nhưng Process Explorer là ứng dụng tốt hơn nhiều cho điều này. Nó cũng là từ Sysinternals mà bây giờ thuộc sở hữu của Microsoft. Chạy Process Explorer với tư cách quản trị viên và sau đó nhấp vào nút tìm kiếm. Điều này sau đó sẽ hiển thị các ứng dụng và chủ đề đang sử dụng tệp.

+0

Tôi thứ hai câu trả lời này. Điều này đã giúp tôi rất nhiều trong việc gỡ lỗi của tôi. – Joel

Các vấn đề liên quan