Вопрос по блокировке lock(SyncObjects.InputSyncer) в

sprint16

Client
Регистрация
11.08.2016
Сообщения
51
Благодарностей
9
Баллы
8
Привет.

У меня есть приложение вне зенки, им управляю с помощью AutoItX.
У меня есть код в кубиках.

Код:
 var handle = AutoItX.WinGetHandle(project.Variables["window"].Value); 
            int minus_x = int.Parse(project.Variables["minus_x"].Value);
            int plus_y = int.Parse(project.Variables["plus_y"].Value);
            AutoItX.WinActivate(handle);
            AutoItX.MouseClick("LEFT", 1109-minus_x, 337+plus_y, 1, 0);
Клик по полю ввода.
Потом
кубик с

Код:
System.Windows.Forms.Clipboard.Clear();
var descr = project.Variables["title"].Value;
System.Windows.Forms.Clipboard.SetText(descr);
Берем в буфер обмена текст

и с

Код:
     var handle = AutoItX.WinGetHandle(project.Variables["window"].Value);
            AutoItX.WinActivate(handle);
            AutoItX.Send("{CTRLDOWN}v{CTRLUP}");
            AutoItX.Send("{TAB}");
вставляем текст

Проблема заключается в сл. когда шаблон два приложения паралельно начинает работать. То естественно клики мышки и вставки в поле начнается чехорда.

Сейчас мне нужно чтобы когда начиналась отработка определенного действия, чтобы делаласб блокировка мыши и буфера обмена, чтобы другой поток не мог в это время сделать действие.

Как это правильно написать? Можете подсказать?

Предполагаю что как то так.

Надо все эти кубики заключить в lock(SyncObjects.InputSyncer) {Здесь мои кубики};
И действительно ли будет происходить блокировка мыши, во время выполнения этого кода с блокировкой.

Хочется чтобы работало так. Есть n потоков. Когда что либо происходит с ресурсами ОС (мышь, буфер обмена, и другие функции AutoItX), чтобы другие потоки ждали выполнения этого куска кода, и если свободно начинали выполнение своего куска кода, при этом выстраивалась как бы очередь. Между выполнениями кода есть проверки и паузы, поэтом есть время на выполнение кода если будет "выстроена очередь"

Надеюсь донес суть))
 

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
819
Баллы
93
И действительно ли будет происходить блокировка мыши, во время выполнения этого кода с блокировкой.
Будет в пределах одного проекта. Если несколько разных проектов надо синхронить - надо уже мутексами лочить или еще чем-то.
 

sprint16

Client
Регистрация
11.08.2016
Сообщения
51
Благодарностей
9
Баллы
8
Будет в пределах одного проекта. Если несколько разных проектов надо синхронить - надо уже мутексами лочить или еще чем-то.
А можно как то через глобальные переменные лочить? Проверять значения заняты или свободно тут. Будет ли толк?
 

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
819
Баллы
93
Я бы не стал ибо лишний гемморой. И при работе с ними из шарпового кубика - эти действия тоже надо лочить..
Как поступать вам - решайте сами.
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)