Я взял проект крюка для клавиатуры и немного подтолкнул его. Раньше это было всего 4 формы, в которых были все логики и математики в этих 4 файлах. Итак, МНОГИЕ часов спустя я просто получил программу обратно вместе, разобрав все. Последний бит - это использование концепции дизайна Model-View-Presenter в главном окне. Все мои тесты отлично работают на моей машине, и, естественно, программа работает так же, как на целевых компьютерах.Как мне показать ShowDialog?
Целевые компьютеры - простые процессоры Intel Atom x86 с 2 ГБ оперативной памяти. У них есть кнопки на них, которые коррелируют с F13-F18 на клавиатуре (то есть, когда вступает в игру моя программа с клавиатурой). Мой ПК для разработки - это полустационарный 6-ядерный процессор AMD x64 с 8 ГБ оперативной памяти. Единственное, что я хотел сделать, это проверить способ настройки этих функциональных кнопок на конкретную задачу. Все мои модульные тесты проходят для этой части. Когда я нажимаю на новый тип задачи, он работает по своему желанию.
«Прохладный», я говорю: «Позволяет увидеть его в действии», поэтому я нажму «Run» в Visual Studio. Моя программа, что F9-F12 - это ключи для перехвата. Теперь окно назначения открывается только тогда, когда вы нажимаете одну из подключенных клавиш, когда основное окно открыто. Если это главное окно не открыто, задача выполняется. Поэтому я открываю свое главное окно и нажимаю F9, а окно Assignment показывает, но я не могу нажимать на что-либо около 4 секунд. Затем он «ловит» и делает то, что когда-либо нажимал. Я подумал, что, возможно, это был мой отладчик, поэтому я пошел в папку с бинами и сразу же запустил приложение.
Я думал, что это была проблема с правами, поэтому я побежал как администратор и та же проблема. Я задавался вопросом, насколько плохо это будет на целевых компьютерах. Я скопировал папку 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, и проблема по-прежнему сохраняется ..:/В программе имеется объем памяти 7 МБ.(то есть TaskManager говорит, что он использует только 7mb), а сама программа - всего 1,1 Мб. странно, как все компоненты работают хорошо самими собой, но не хорошо вместе. –