Člověk prostě musí zkoušet... :) Stačilo v proceduře tmrTaskTick vypustit příkaz timr.Stop() Všechny timery se korektně spustili. A protože by bylo zvláštní, aby to VŠECHNO pak fungovalo, nefunguje ošetření procesu, kterým spouštím definovanou událost. V deklaraci mám:
WithEvents myProcess As New System.Diagnostics.Process
V proceduře spuštění pak:
Dim ProcesID As Object
myProcess.StartInfo.FileName=NejakaAplikace.Exe
myProcess.StartInfo.Arguments=NejakeArgumenty
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
myProcess.EnableRaisingEvents = True
AddHandler myProcess.Exited, AddressOf Me.KonecNahravky myProcess.Start()
V proceduře pro indikaci ukončení procesu pak:
Private Sub KonecNahravky(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyProcess.Exited
If Me.InvokeRequired() Then
Dim dr As New KonecNahravkyDelegate(AddressOf KoniecNahravky)
Try
Me.Invoke(dr, myProcess.Id) '', e)
Catch
End Try
else
KonecNahravky (myProcess.Id)
End If
Pak nasleduje Delegate - nevim, jestli je to OK
Delegate Sub KonecNahravkyDelegate(ByVal IDprocesu] as Integer)
Private Sub KonecNahravky(ByVal [IDprocesu] As Integer)
Dim i As Integer
For i = 0 To lvRECORDS.Items.Count -1
If IDprocesu = lvRECORDS.Items(i).SubItems(16).Text And lvRECORDS.Items(i).SubItems(11).Text = "NAHRAVAM" Then
Me.lvRECORDS.Items(i).SubItems(11).Text = "OK"
Me.lvRECORDS.Items(i).SubItems(16).Text = ""
End If
Next
End Sub
A abych specifikoval konkrétní problém v tomto stádiu: Proces ohlásí svůj konec (resp.provede zápis do listView /lvRECORDS/) jenom jednou. Pokud první proces ještě běží a spustí se další, tak svůj konec indikuje až ten druhý. Zajímavé je, že pak jsem měl načasované další dva procesy, které šli po sobě, ale indikace nenastala ani u jedného z nich. Nějaký nápad?
|