tại sao FileSystemWatcher lại kích hoạt hai lần? Có cách nào dễ dàng để sửa chữa nó? Chắc chắn nếu tôi cập nhật hoặc chỉnh sửa các tập tin văn bản nó chỉ nên cháy một lần?Tại sao FileSystemWatcher lại kích hoạt hai lần
liên kết này đây http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx nói
- Sự kiện được nâng lên gấp đôi - Một sự kiện sẽ được nâng lên gấp đôi nếu một event handler (AddHander FSW.Created, AddressOf FSW_Created) là quy định một cách rõ ràng. Điều này là do, theo mặc định, các sự kiện công khai sẽ tự động gọi các phương thức được bảo vệ tương ứng (OnChanged, OnCreated, OnDeleted, OnRenamed). Để khắc phục sự cố này, chỉ cần xóa trình xử lý sự kiện rõ ràng (AddHandler ...).
"Xóa trình xử lý sự kiện rõ ràng" có nghĩa là gì?
Imports System.IO
Public Class Form2
Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed
'this fires twice
MessageBox.Show("test")
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
FileSystemWatcher1.Path = "C:\Users\c\Desktop\test\"
FileSystemWatcher1.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName Or NotifyFilters.CreationTime
FileSystemWatcher1.IncludeSubdirectories = False
FileSystemWatcher1.Filter = "text.txt"
End Sub
End Class
Khi nào chính xác bạn đang gặp phải hành vi * không mong muốn này? Có phải khi bạn chỉnh sửa tệp, di chuyển, xóa hoặc tạo tệp không? – Arrow
hi chỉnh sửa tập tin là khi nó xảy ra - cảm ơn –
Tôi đã cập nhật câu hỏi của mình với một giải pháp khả thi, ít nhất một điều gì đó để kiểm tra vì nó có thể giúp thu hẹp vấn đề. – Arrow