?? form1.vb
字號:
Public Class Form1
Public Structure process '定義進(jìn)程的數(shù)據(jù)結(jié)構(gòu)
Dim proname As String
Dim createtime As String
Dim proid As Integer
Dim allneedtime As Integer
Dim waittime As Integer
Dim flishtime As Integer
End Structure
Public h As Integer = 0
Public runing, maxsignal As process '定義就緒、阻塞進(jìn)程隊列和正在執(zhí)行進(jìn)程、需要喚醒進(jìn)程數(shù)據(jù)結(jié)構(gòu)
Public wait(9), signal(9) As process
Sub tianjia() '添加進(jìn)程
Dim i, j, k As Integer
Dim n, p As String
Dim m As Double
Dim d As Date = Date.Now
Dim s As String = d.ToLongTimeString()
j = 10
For i = 0 To 9
If wait(i).proid <> 0 Then
j -= 1
End If
Next
If j = 0 Then
MsgBox("注意!" & Chr(10) & "就緒隊列已滿,不能再添加進(jìn)程!", MsgBoxStyle.OkOnly, "警告!")
TextBox1.Text = ""
TextBox3.Text = ""
Exit Sub
Else
For i = 0 To 9
If wait(i).proid = 0 Then
p = TextBox1.Text
n = TextBox3.Text
m = Val(n)
k = m \ 2
j = (m + 1) \ 2
If TextBox1.Text = "" Then
MsgBox("注意!" & Chr(10) & "進(jìn)程名不能為空,請重輸!", MsgBoxStyle.OkOnly, "錯誤!")
TextBox1.Text = ""
TextBox3.Text = ""
TextBox1.Focus()
Exit Sub
ElseIf Len(p) > 8 Then
MsgBox("注意!" & Chr(10) & "進(jìn)程名長度不能長于8,請重輸1~8長度的進(jìn)程名!", MsgBoxStyle.OkOnly, "錯誤!")
TextBox1.Text = ""
TextBox3.Text = ""
TextBox1.Focus()
Exit Sub
ElseIf TextBox3.Text = "" Then
MsgBox("注意!" & Chr(10) & "進(jìn)程執(zhí)行時間不能為空,請重輸!", MsgBoxStyle.OkOnly, "錯誤!")
TextBox3.Text = ""
TextBox3.Focus()
Exit Sub
ElseIf m > 1000000000 Then
MsgBox("注意!" & Chr(10) & "進(jìn)程執(zhí)行時間超出范圍,請重輸!", MsgBoxStyle.OkOnly, "錯誤!")
TextBox3.Text = ""
TextBox3.Focus()
Exit Sub
ElseIf (k * 2 = m Or j * 2 = m + 1) And m > 0 Then
wait(i).proname = TextBox1.Text
wait(i).createtime = s
wait(i).allneedtime = m
h += 1
wait(i).proid = h
TextBox1.Text = ""
TextBox3.Text = ""
Else
MsgBox("注意!" & Chr(10) & "進(jìn)程執(zhí)行時間必須是大于零的整數(shù),請重輸!", MsgBoxStyle.OkOnly, "錯誤!")
TextBox3.Text = ""
TextBox3.Focus()
Exit Sub
End If
Exit For
End If
Next
End If
If TextBox5.Text = "" Then
zhixing()
Else
MsgBox("注意!" & Chr(10) & "已有進(jìn)程正在執(zhí)行,進(jìn)程被系統(tǒng)插入就緒隊列!", MsgBoxStyle.OkOnly, "提示!")
Exit Sub
End If
Timer2.Start()
End Sub
Sub zhixing() '啟動執(zhí)行進(jìn)程
Dim i, j As Integer
j = 10
For i = 0 To 9
If wait(i).proid = 0 Then
j -= 1
End If
Next
If j = 0 Then
TextBox4.Text = "所有的就緒進(jìn)程都已執(zhí)行完了,請?zhí)砑舆M(jìn)程、喚醒阻塞進(jìn)程或退出程序!"
Exit Sub
Else
maxwait()
jiuxu()
TextBox5.Text = "進(jìn)程:" + runing.proname + ".exe 進(jìn)程標(biāo)示符:" + runing.proid.ToString + " 創(chuàng)建時間:" + runing.createtime + " 需要運(yùn)行時間:" + runing.allneedtime.ToString + "秒 已運(yùn)行時間:" + runing.flishtime.ToString + "秒。" + vbCrLf
Timer1.Start()
End If
End Sub
Sub maxwait() '請最高響應(yīng)比度的就緒進(jìn)程
Dim i, j As Integer
Dim max, n As Double
For i = 0 To 9
If wait(i).proid <> 0 Then
j += 1
max = (wait(i).allneedtime - wait(i).flishtime + wait(i).waittime) / wait(i).allneedtime
runing = wait(i)
Exit For
End If
Next
For i = j To 9
If wait(i).proid <> 0 Then
n = (wait(i).allneedtime - wait(i).flishtime + wait(i).waittime) / wait(i).allneedtime
If max >= n Then
max = max
Else
max = n
runing = wait(i)
End If
End If
Next
For i = 0 To 9
If runing.proid = wait(i).proid Then
wait(i).allneedtime = 0
wait(i).createtime = ""
wait(i).flishtime = 0
wait(i).proid = 0
wait(i).proname = ""
wait(i).waittime = 0
Exit For
End If
Next
End Sub
Sub jiuxu() '顯示就緒進(jìn)程
Dim i As Integer
TextBox4.Text = ""
For i = 0 To 9
If wait(i).proid <> 0 Then
wait(i).waittime += 1
TextBox4.Text += "進(jìn)程:" + wait(i).proname + ".exe 進(jìn)程標(biāo)示符:" + wait(i).proid.ToString + " 創(chuàng)建時間:" + wait(i).createtime + " 總需運(yùn)行時間:" + wait(i).allneedtime.ToString + "秒 等待時間:" + wait(i).waittime.ToString + "秒 已運(yùn)行時間:" + wait(i).flishtime.ToString + "秒。" + vbCrLf
End If
Next
End Sub
Sub yunxing() '運(yùn)行正在執(zhí)行進(jìn)程
runing.flishtime += 1
TextBox5.Text = "進(jìn)程:" + runing.proname + ".exe 進(jìn)程標(biāo)示符:" + runing.proid.ToString + " 創(chuàng)建時間:" + runing.createtime + " 需要運(yùn)行時間:" + runing.allneedtime.ToString + "秒 已運(yùn)行時間:" + runing.flishtime.ToString + "秒。" + vbCrLf
If runing.allneedtime = runing.flishtime Then
flish()
TextBox5.Text = ""
Timer1.Stop()
zhixing()
End If
End Sub
Sub flish() '顯示完成進(jìn)程
TextBox6.Text += "進(jìn)程:" + runing.proname + ".exe 進(jìn)程標(biāo)示符:" + runing.proid.ToString + " 創(chuàng)建時間:" + runing.createtime + " 需要運(yùn)行時間:" + runing.allneedtime.ToString + "秒 已運(yùn)行時間:" + runing.flishtime.ToString + "秒。" + vbCrLf
runing.allneedtime = 0
runing.createtime = ""
runing.waittime = 0
runing.flishtime = 0
runing.proid = 0
runing.proname = ""
End Sub
Sub zusai() '阻塞正在執(zhí)行進(jìn)程
Dim i, j As Integer
If TextBox5.Text = "" Then
MsgBox("注意!" & Chr(10) & "當(dāng)前沒有正在執(zhí)行的進(jìn)程,不能阻塞正在執(zhí)行的進(jìn)程!", MsgBoxStyle.OkOnly, "錯誤!")
Exit Sub
End If
j = 10
For i = 0 To 9
If signal(i).proid <> 0 Then
j -= 1
End If
Next
If j = 0 Then
MsgBox("注意!" & Chr(10) & "阻塞隊列已滿,不能再添加到阻塞隊列!", MsgBoxStyle.OkOnly, "警告!")
Exit Sub
Else
For i = 0 To 9
If signal(i).proid = 0 Then
signal(i) = runing
signal(i).waittime = 0
Exit For
End If
Next
Timer1.Stop()
signalpro()
TextBox5.Text = ""
zhixing()
End If
End Sub
Sub signalpro() '顯示阻塞進(jìn)程
Dim i As Integer
TextBox7.Text = ""
For i = 0 To 9
If signal(i).proid <> 0 Then
signal(i).waittime += 1
TextBox7.Text += "進(jìn)程:" + signal(i).proname + ".exe 進(jìn)程標(biāo)示符:" + signal(i).proid.ToString + " 創(chuàng)建時間:" + signal(i).createtime + " 總需運(yùn)行時間:" + signal(i).allneedtime.ToString + "秒 等待時間:" + signal(i).waittime.ToString + "秒 已運(yùn)行時間:" + signal(i).flishtime.ToString + "秒。" + vbCrLf
End If
Next
End Sub
Sub huanxing() '喚醒阻塞進(jìn)程
Dim i, j, k As Integer
j = 10
For i = 0 To 9
If wait(i).proid <> 0 Then
j -= 1
End If
Next
k = 10
For i = 0 To 9
If signal(i).proid = 0 Then
k -= 1
End If
Next
If k = 0 Then
MsgBox("注意!" & Chr(10) & "阻塞隊列已空,不能再喚醒阻塞進(jìn)程!", MsgBoxStyle.OkOnly, "警告!")
ElseIf j = 0 Then
MsgBox("注意!" & Chr(10) & "就緒隊列已滿,不能再喚醒阻塞進(jìn)程!", MsgBoxStyle.OkOnly, "警告!")
Else
signalwait()
For i = 0 To 9
If wait(i).proid = 0 Then
wait(i) = maxsignal
wait(i).waittime = 0
Exit For
End If
Next
For i = 0 To 9
If maxsignal.proid = signal(i).proid Then
signal(i).allneedtime = 0
signal(i).createtime = ""
signal(i).flishtime = 0
signal(i).proid = 0
signal(i).proname = ""
signal(i).waittime = 0
Exit For
End If
Next
jiuxu()
signalpro()
End If
If TextBox5.Text = "" Then
zhixing()
End If
End Sub
Sub signalwait() '求最高響應(yīng)比度的阻塞進(jìn)程
Dim i, j As Integer
Dim max, n As Double
For i = 0 To 9
If signal(i).proid <> 0 Then
j += 1
max = (signal(i).allneedtime - signal(i).flishtime + signal(i).waittime) / wait(i).allneedtime
maxsignal = signal(i)
Exit For
End If
Next
For i = j To 9
If signal(i).proid <> 0 Then
n = (signal(i).allneedtime - signal(i).flishtime + signal(i).waittime) / wait(i).allneedtime
If max >= n Then
max = max
Else
max = n
maxsignal = signal(i)
End If
End If
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
tianjia()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer '初始化就緒和阻塞隊列
runing.allneedtime = 0
runing.waittime = 0
runing.createtime = ""
runing.flishtime = 0
runing.proid = 0
runing.proname = ""
maxsignal.allneedtime = 0
maxsignal.waittime = 0
maxsignal.createtime = ""
maxsignal.flishtime = 0
maxsignal.proid = 0
maxsignal.proname = ""
For i = 0 To 9
wait(i).allneedtime = 0
wait(i).createtime = ""
wait(i).flishtime = 0
wait(i).proid = 0
wait(i).proname = ""
wait(i).waittime = 0
signal(i).allneedtime = 0
signal(i).createtime = ""
signal(i).flishtime = 0
signal(i).proid = 0
signal(i).proname = ""
signal(i).waittime = 0
Next
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
huanxing()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
zusai()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
yunxing()
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
jiuxu()
signalpro()
End Sub
End Class
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -