6
画面にUIを表示しないでこれを行う方法はありますか?現在のところ、この小さな非UIプログラムでは、3270メインフレームからテキストファイルに60秒ごとに情報を読み書きしていますが、ユーザーが60秒待機の途中で取り消したいとしたら、どうすればUIからのイベントなしでkeypress?スレッドがスリープしている間に「リッスン」するとキーボードが鳴ります
画面にUIを表示しないでこれを行う方法はありますか?現在のところ、この小さな非UIプログラムでは、3270メインフレームからテキストファイルに60秒ごとに情報を読み書きしていますが、ユーザーが60秒待機の途中で取り消したいとしたら、どうすればUIからのイベントなしでkeypress?スレッドがスリープしている間に「リッスン」するとキーボードが鳴ります
キーストロークをキャプチャするには、何らかのインターフェイスが必要です。ここ
は、コマンドを入力するユーザのためのGUIのアイドル状態を残しながら、バックグラウンドスレッドで処理「何かを」可能にするコンソールアプリケーションで実行例(ブランクを作成し、defaukltモジュールに貼り付け)
あります。この場合、1000
オプションへの単なる1秒の遅延カウンタがテキスト
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
を比較あなただけの簡単なコード例を – user1937198
した終了時stopworkを呼び出したいかもしれないと、あなたはそれぞれの特定のケースに合わせて調整します。ほとんどの場合、アプリケーションGUIを終了したデータを処理する際に、明示的に指定しない限り、その作業を終了したいと考えています。 – DarrenMB