Если я правильно понимаю, похоже, что вы не понимаете, как работает оператор перенаправления. >
начинается с нового, >>
добавляется. Простое переключение на соответствующего оператора решит вашу проблему.
@Echo Off
Set "log="
For /F "Tokens=1-3Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
)Do If Not Defined log Set "log=StackProcess%%A%%B%%C.log"
Echo Stopping the StackProcess
"%__AppDir__%InetSrv\AppCmd.exe" Stop AppPool /apppool.name:StackProcess
Echo %DATE% %TIME% - Service Stopped Successfully>"%log%"
Echo StackProcess Stopped
Timeout 5 /NoBreak>Nul
Echo Starting the StackProcess
"%__AppDir__%InetSrv\AppCmd.exe" Start AppPool /apppool.name:StackProcess
Echo %DATE% %TIME% - Service Restarted Successfully>>"%log%"
Echo StackProcess Restarted
Timeout 2 /NoBreak>Nul
Обратите внимание, хотя я, возможно, и сделал некоторые улучшения в приведенном выше примере, вы регистрируете «успешные» сообщения без фактической проверки того, что процессы запуска и остановки были успешными. Я оставлю вам решать, хотите ли вы расширить свой код для такой проверки.
Единственным путем я знаю о, должен получить некоторые/все средства управления, как отключено. Однако в зависимости от того, как средства управления размечаются, не необходимо установить каждое управление, как отключено - когда контейнерное управление отключено, затем все его дети отключены, также. Например, если у Вас есть a GroupBox
с некоторыми средствами управления, если Вы устанавливаете GroupBox
к отключенному, затем все средства управления в GroupBox
будет отключен, также.
Выберите некоторое верхнее управление контейнером уровня (могла бы быть сама форма), и установите, это имеет свойство Enabled ко лжи. Все средства управления, помещенные в то управление, будут отключены, который будет препятствовать тому, чтобы они получили вход.
На уровне API Win32 существует функция EnableWindow, можно отключить любую руку окна с (необходимо получить базовый дескриптор главного окна, конечно, и любых других высокоуровневых окон). Я не протестировал его в WinForms, все же. (Я вполне уверен на уровне User32 существуют другие ответы, но я не могу помнить вызовы API прямо сейчас.)
Примечание: это не отображает средства управления серым, который уменьшает его утилиту с точки зрения удобства использования (пользователь просто видит 'замороженное приложение'). Становится незначительно лучше, если Вы, по крайней мере, устанавливаете курсор в форме песочных часов.
Однако это - быстрый-и-грязный способ иметь дело с асинхронной обработкой. Необходимо ли действительно заблокировать пользователя из целого приложения? Возможно, это - всего несколько функций, которые должны быть запрещены, в то время как запрос идет полным ходом?
К сожалению, с WinForms, необходимо будет, вероятно, отключить/разрешить кнопки в единственном общем методе. Это - одно из преимуществ, которые WPF приносит по формам окон - намного легче обработать эти ситуации.
Что касается не блокирования Вашего UI - необходимо будет переместить вызовы в модель асинхронного программирования. В Вашем случае я рекомендовал бы смотреть на ThreadPool.
Вы захотите сделать что-то, любят, имеют кнопку, отключают Ваши средства управления, вызывают Вашу операцию на пуле потоков, затем повторно включают им на завершении.