C#,使用VS2010,我有一些没有意义的东西。C#:为什么我的后台工作线程信号完成时,它不是?
在启动时我的程序需要从文本文件中加载几百k。确保加载代码工作正常后,我把它扔在后台线程中。只要从IDE内部运行,一切都很好,但是当它独立运行时,线程会说它在没有运行时完成。这当然是繁荣。
触发代码:
BackgroundWorker Background = new BackgroundWorker();
Background.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DatabaseLoaded);
Background.DoWork += new DoWorkEventHandler(delegate { Database.Load(); });
Background.RunWorkerAsync();
和回事繁荣的东西是DatabaseLoaded()
。
我放了一些消息框来跟踪发生了什么:Load()
方法的第一行和最后一行以及DatabaseLoaded()
的第一行。
在IDE中,按照我的预期触发:Load()
开始,Load()
完成,DatabaseLoaded()
。但是,在独立运行时,我得到Load()
开头,DatabaseLoaded()
,然后是未处理的异常框(加载程序甚至没有建立空表,更不用说填充它们了。)
我是坚果还是Microsoft?
就是这样。出于某种原因它GetExecutingAssembly()。位置返回了一个不同的路径,它没有找到一切。 – 2010-12-21 00:58:52