我接手了一個Keyboard hook項目,並且一直在對它進行一些修整。它曾經只是4種形式,擁有這4個文件中的所有邏輯和數學。所以很多小時後,我只是把所有的東西都解開後重新組合起來。最新的一點是在主窗口上使用Model-View-Presenter設計理念。我所有的測試都在我的機器上運行良好,自然,程序在目標計算機上的表現應該很好。如何分析ShowDialog?
目標計算機是簡單的x86 Intel Atom處理器,內存爲2gb。他們在鍵盤上有與F13-F18相關的按鈕(這是我的鍵盤鉤子程序進入的地方)。我的開發PC是一款帶8gb內存的半粗六核AMD x64機器。我想要做的一件事是測試一種將這些功能按鈕設置爲特定任務的方法。我所有的單元測試都通過了這部分。當我點擊一個新的任務類型時,它會按需要運行。
「酷」,我說,「讓我們看看它的行動」,所以我打在Visual Studio中運行。我的程序是F9-F12是掛鉤的鑰匙。現在只有當主窗口打開時按下其中一個掛鉤鍵時,分配窗口才會打開。如果該主窗口未打開,則執行該任務。所以我打開我的主窗口,並按F9和Assignment窗口顯示,但我不能點擊任何東西約4秒。然後它「捕捉」起來,做我曾經點擊過的東西。我想也許這是我的調試器,所以我去了bin文件夾,直接運行應用程序和相同的交易。
我想也許這是一個權限的事情,所以我跑作爲管理員和同樣的問題。我想知道在目標計算機上會有多糟糕。我將我的bin文件夾複製到閃存驅動器,將內容複製到Program Files中並運行它。它工作得很好(在一定程度上)但問題不存在。在對話框可見之後,我可以立即選擇任何我想要的任務。
雖然我的鍵盤掛鉤在嘗試重新分配11次後停止工作,但這是一個單獨的問題。所以我想我記得有人說,使用探查器。那麼我的視覺工作室有一個,所以我打開它,但我不能讓頭部或尾部的數據返回。我會發布代碼,但我不知道要發佈什麼。我甚至竟用System.Console.Write(".");
圍繞我以爲面積的問題,不過這不是問題
protected override void theHook_RegisteredKeyPressed(System.Windows.Forms.Keys key)
{
if (TakeOver)
{
if (!Busy)
{
busy = true;
LibraryTrace.Start("NewKeyAssignment", key);
using (var window = new AssignmentTypePanel())
{
presenter = new TaskPresenter(window, theList[key].Task);
window.Presenter = presenter;
//execution will not continue past here until window is closed
window.ShowDialog();
}
theList[key] = new TaskKey(key, presenter.Task);
LibraryTrace.End("NewKeyAssignment", theList[key].Task.ToString());
busy = false;
}
}
else
{
base.theHook_RegisteredKeyPressed(key);
}
}
所以我很堅持。我無法弄清楚輸入什麼,要問什麼。有關如何找到此問題根源的任何提示?
以及一個預感我把所有的目標平臺設置爲x86,問題仍然存在..:/該程序有7MB的內存佔用。(即TaskManager表示它只使用7mb),程序本身只有1.1mb。奇怪的是,他們自己如何使所有的部件都能很好地工作,但不是很好的一起 – 2013-04-03 19:55:25