Ekranda kullanıcı arabirimi olmadan bunu yapmanın bir yolu var mı? Şu anda UI olmayan küçük bir programa 3270 ana bilgisayardan her 60 saniyede bir Metin Dosyası okuma ve yazma bilgisi alıyorum, kullanıcının 60 saniyelik bekleme süresinin ortasında iptal etmek istediğini varsayalım. UI'den herhangi bir olay olmadan tuşa basmak mı?İş parçacığı uyurken bir tuşa basmak için 'Dinle'
6
A
cevap
1
Tuş vuruşlarını yakalamak için bir çeşit arabirime ihtiyacınız vardır. İşte
(boş bir tane oluşturun ve defauklt modüle yapıştırın) bir konsol uygulamasında çalışan örneğidir
komutları girmek için kullanıcı için GUI boşta bırakarak bir arka plan iş parçacığı işleme "ŞEY" verir . Bu durumda 1000
Opsiyon sadece basit 1 saniyelik bir gecikme sayacı Metin
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
İlgili konular
- 1. Python uyurken bir iş parçacığı sonlandır
- 2. Bir iş parçacığı veya iş parçacığı için bir DAO DAO?
- 3. Xcode 4 idekeybindings tek tuşa basmak için çoklu komutlar
- 4. İş parçacığı güvenli Queue
- 5. iş parçacığı içinde yerel depolama iş parçacığı
- 6. Bir "gerçek" iş parçacığı
- 7. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 8. iş parçacığı
- 9. PARTIAL_WAKE_LOCK ve bir hizmette çalışan iş parçacığı
- 10. Bir daemon iş parçacığı yalnızca
- 11. Bir iş parçacığı özellikle blok
- 12. Bir iş parçacığı oluşturma işlevine
- 13. başka bir iş parçacığı (Net)
- 14. UEFI'da bir iş parçacığı oluşturma
- 15. .NET'te bir iş parçacığı başlatılıyor
- 16. CountdownTimer UI iş parçacığı güncelleştiren çalışan iş parçacığı içinde
- 17. System.Timers.Timer iş parçacığı bir iş parçacığı havuzu üzerinde yürütme için nasıl engellenir?
- 18. Kinect ile iş parçacığı
- 19. Ayrı iş parçacığı içinde
- 20. Tomcat iş parçacığı havuzundaki iş parçacığı sayısı nasıl artırılır?
- 21. İş parçacığı .net 4
- 22. İş parçacığı durduruluyor
- 23. Qt: Arka plan iş parçacığı yenileme UI iş parçacığı
- 24. WPF iş parçacığı C#
- 25. Django/sqlite3 "OperationalError: iş parçacığı yok" iş parçacığı üzerinde
- 26. Ana iş parçacığı
- 27. gdb - iş parçacığı günlüğü
- 28. Hatalı iş parçacığı
- 29. İşleyici vs İş parçacığı
- 30. Django: - Bir sonraki sayfada bir sayfaya basılan tek bir tuşa basmak
karşılaştırın sadece basit bir örnek kod – user1937198
oldu çıkarken stopwork aramak istediğiniz olabilir ve her özel durum için özelleştirirsiniz. Çoğu durumda uygulama GUI'sini bıraktığınız verileri işlerken, açık bir şekilde bunu söylemediğim sürece bu işi bitirmesini isterim. – DarrenMB