Есть ли способ сделать это без интерфейса пользователя на экране? В настоящее время у меня есть эта небольшая программа, отличная от UI, для чтения и записи информации с 3280 мэйнфрейма в текстовый файл каждые 60 секунд, предположим, что пользователь хочет отменить в середине 60 секунд ожидания, как я могу «прослушать» без нажатия каких-либо событий из пользовательского интерфейса?«Слушайте» нажатие клавиши, когда нить спала
6
A
ответ
1
Вам нужен какой-то интерфейс для захвата нажатий клавиш.
Вот пример, который запускается в консольном приложении (создать один пустой и вставить в модуль defauklt)
Это позволяет перерабатывать «НЕЧТО» в фоновом потоке, оставляя GUI вхолостую для ввода пользователем команд , В этом случае только простой счетчик 1 второй задержки 1000.
Option Compare Text
Module Module1
Sub Main()
Console.WriteLine("Enter ""Start"", ""Stop"", or ""Exit"".")
Do
Dim Com As String = Console.ReadLine
Select Case Com
Case "Start"
Console.WriteLine(StartWork)
Case "Stop"
Console.WriteLine(StopWork)
Case "Exit"
Console.WriteLine("Quiting on completion")
Exit Do
Case Else
Console.WriteLine("bad command Enter ""Start"", ""Stop"", or ""Exit"".")
End Select
Loop
End Sub
Public Function StartWork() As String
If ThWork Is Nothing Then
ThWork = New Threading.Thread(AddressOf Thread_Work)
ThWork.IsBackground = False 'prevents killing the work if the user closes the window.
CancelWork = False
ThWork.Start()
Return "Started Work"
Else
Return "Work Already Processing"
End If
End Function
Public Function StopWork() As String
CancelWork = True
If ThWork Is Nothing Then
Return "Work not currently running"
Else
Return "Sent Stop Request"
End If
End Function
Public CancelWork As Boolean = False
Public ThWork As Threading.Thread = Nothing
Public dummyCounter As Integer = 0
Public Sub Thread_Work()
Try
Do
dummyCounter += 1
Console.Title = "Working ... #" & dummyCounter
' ###############
' do a SMALL PART OF YOUR WORK here to allow escape...
' ###############
If dummyCounter >= 1000 Then
Console.Title = "Work Done at #" & dummyCounter
Exit Do
ElseIf CancelWork Then
Exit Do
End If
Threading.Thread.Sleep(1000) ' demo usage only.
Loop
Catch ex As Exception
Console.WriteLine("Error Occured at #" & dummyCounter)
End Try
ThWork = Nothing
If CancelWork Then
Console.Title = "Work Stopped at #" & dummyCounter
End If
End Sub
End Module
Смежные вопросы
- 1. Слушайте нажатие клавиши, когда программа находится в фоновом режиме
- 2. Почему нить не спала правильно?
- 3. Как нажимать другие кнопки, пока нить спала
- 4. Слушайте двойное нажатие клавиши с помощью API-интерфейсов Chrome.
- 5. Слушайте нажатие клавиши с помощью Powershell, но не ждите его
- 6. Слушайте нить при выполнении задачи
- 7. Быстрое нажатие клавиши «Домой», когда экран заблокирован?
- 8. QTreeWidget перетащить только тогда, когда нажатие клавиши
- 9. Как создать таймер Ruby, который приостанавливается, пока его нить спала?
- 10. Как сделать нажатие клавиши на клавиатуре, как нажатие другой клавиши?
- 11. Как переключить нажатие клавиши
- 12. Служба VB .Net не остановится, пока нить спала
- 13. Проверка того, что нить в другом процессе спала
- 14. Как проверить, что нить спала в x секунду C#
- 15. Какое нажатие клавиши?
- 16. Java Game - нажатие клавиши
- 17. Нажатие клавиши, а затем выполнение другой клавиши
- 18. Как перехватить нажатие клавиши?
- 19. Захват «Удалить» нажатие клавиши
- 20. Как получить нажатие клавиши?
- 21. Как перехватить нажатие клавиши?
- 22. livequery нажатие клавиши событие
- 23. питон нажатие клавиши Классификатор
- 24. jQuery: отправить нажатие клавиши
- 25. Замещающее нажатие клавиши
- 26. jQuery нажатие клавиши
- 27. магазин нажатие клавиши Баш
- 28. Android имитирует нажатие клавиши
- 29. Нажатие клавиши в файл
- 30. Включить отключенное нажатие клавиши?
вы можете вызвать stopwork при выходе – user1937198
был только простой пример кода, и вы бы адаптировать к каждому конкретному случаю. в большинстве случаев обрабатывая данные, когда вы выходите из графического интерфейса приложения, я бы хотел, чтобы он завершил его работу, если я прямо не сказал об этом. – DarrenMB