Продолжить выполнение кода после вызова ShowDialog () - PullRequest
0 голосов
/ 20 июня 2019

Извиняюсь за вопрос, на который у Google уже есть тонна ответов, к сожалению, они либо связаны с C #, либо опробовали различные ответы, не работают для меня (некоторые из которых приведены в примере ниже).

Я застрял, чувствуя ограничения ShowDialog().

У меня есть скрипт, который делает x , оставляет файл журнала в y , затем перезагружает машину.Когда устройство возвращается, ожидается, что конечный пользователь снова запустит сценарий, после чего он ищет файл журнала в y , а затем завершит задачу, выполнив z .

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

В приведенном ниже примере первый запуск имитирует задание x , после чего скрипт закрывается и перезапускается.sleep 5 предназначен для демонстрации зависаний или нагрузок на заднем плане.

$form = New-Object Windows.Forms.Form
$form.ClientSize = New-Object Drawing.Size(200, 200)

$label = New-Object System.Windows.Forms.Label
$label.Height = 50
$label.Width = 100
$label.Text = "hello world"

$button = New-Object System.Windows.Forms.Button
$button.Height = 30
$button.Width = 100
$button.Left = 60
$button.Top = 100
$button.Text = "press me"

$button.Add_Click({
    $label.Text = "goodbye world"
    "file created" | Out-File $env:temp\testform.txt -Force ascii
})

$form.Controls.Add($label)
$form.Controls.Add($button)
$form.Controls.Add($checkbox)

if ((Test-Path "$env:temp\testform.txt")) {
    Sleep 5
    $label.Text = "IF found the file"
    "IF processes everything within before showing the dialog." |
        Add-Content $env:temp\testform.txt
}

$form.Add_activated({
    Sleep 5
    $label.Text = "Activated found the file $i"
    "activate keeps looping the same response every time the form has is clicked." |
        Add-Content $env:temp\testform.txt
})

$form.Add_load({
    Sleep 5
    $label.Text = "Loaded found the file $i"
    "Load processes everything within before showing the dialog." |
        Add-Content $env:temp\testform.txt
})

$form.ShowDialog()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...