Как убедиться, что код запущен в главном потоке в vb.net? - PullRequest
0 голосов
/ 21 января 2012

Это легко сделать с целью c, но я не знаю, как это сделать в vb.net

update: я знаю о control.invoke.Но control.invoke требует элемента управления, который может меняться от программы к программе.Что может быть проще?

Так что да, программа - это winform.Однако мне нужно решение, которое не зависит от какого-либо конкретного контроля.Если это действительно так, мне не нужно запускать что-либо в главном потоке?

Ответы [ 2 ]

1 голос
/ 21 января 2012

Что вы подразумеваете под «обеспечить».Хотите ли вы иметь возможность проверить из запущенного потока, находится ли он в основном потоке, или вы хотите программно сказать перед тем, как код будет запущен, что он должен выполняться только в основном потоке.обновить пользовательский интерфейс из вторичного потока?Если это так, обычно есть более эффективные способы (в зависимости от типа приложения), чем проверка самого потока.Например, в приложении WinForms вы можете безопасно спросить большинство элементов управления о необходимости перекрестного вызова, отметив InvokeRequired.Если true, тогда вы можете передать элемент управления Delegate для запуска вашего кода, который поместит его в основной поток пользовательского интерфейса для вас.

0 голосов
/ 14 февраля 2012

Никто не делает это правильно. Таким образом, я сделал единственный способ, которым я знаю. Иметь глобальную переменную и синхронизировать эту глобальную переменную. Это не гарантирует, что поток будет работать в том же потоке пользовательского интерфейса. Тем не менее, это гарантирует, что коды не будут работать одновременно. Что я и хочу.

...