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