我在带有框架 4.0 的 Visual Studio 2010 中使用 C#。
在我的项目中,以两种不同的形式,有两个FileSystemWatcher
s 的属性EnableRaisingEvent
设置为false
. 如果我关闭 Visual Studio,当我重新打开它时,我会同时FileSystemWatcher
进入EnableRaisingEvent
设置为true
.
在我的设计器文件中的两个表单中都有以下代码:
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.fileSystemWatcher1 = new System.IO.FileSystemWatcher();
((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).BeginInit();
this.SuspendLayout();
this.fileSystemWatcher1.Filter = "my_filter";
this.fileSystemWatcher1.NotifyFilter = System.IO.NotifyFilters.LastWrite;
this.fileSystemWatcher1.SynchronizingObject = this;
this.fileSystemWatcher1.Changed += new System.IO.FileSystemEventHandler(this.fileSystemWatcher1_Changed);
}
该属性EnableRaisingEvent
未设置,但默认为false
.
知道为什么我会出现这种奇怪的行为吗?
编辑
我遵循了 Virtlink 的建议,添加了以下代码行:
this.fileSystemWatcher1.EnableRaisingEvents = false;
它似乎解决了我的问题,但几天后(以及项目的一些打开、关闭和重建,但没有修改fileSystemWatcher1
)我发现:
在设计器中,在 的属性中
fileSystemWatcher1
,EnableRaisingEvents
被设置回true
在代码中,之前添加的行丢失了
我尝试迁移到 Visual Studio 2012(仍然是框架 4.0),解决方法又解决了几天的问题。然后我得到了与VS10相同的情况。
还有什么想法吗?