none
跑兩個同一程式 Timer 問題 RRS feed

  • 問題

  • 兩個程式時間設定相同, 可是單跑到設定秒數的時候

    只有一個程式到了設定時間能順利執行設定動作, 另外一個設定時間也一樣可是不能執行動作。

     

        Private Sub RunTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RunTimer.Tick
            If txtCurrentTime.Text.ToString = txtNextTime.Text.ToString Then
                Call MainForm.btnPayItem_Click(sender, e)
    
                txtEndTime.Text = "結束時間 : " & Now.ToString("HH:mm:ss")
    
                'Setting
                Me.btnNewAction.Enabled = True
                Me.btnActionUpdate.Enabled = False
                Me.btnResetTime.Enabled = False
    
                Me.RunTimer.Enabled = False
                Me.RunTimer.Stop()
            Else
                Exit Sub
            End If
    


     

    更新 :

    是同一個exe, 開2個一樣的 exe

    • 已編輯 Mr.Frankie 2011年11月12日 上午 10:28
    2011年11月12日 上午 04:19

解答

  • 我試著作了一個程式測試, 沒發生你說的問題, 所以你的 btnPayItem_Click 倒底做了什麼事 ?

    順帶一提, 把    Call MainForm.btnPayItem_Click(sender, e) 改成 btnPayItem.performclick() 會好一點 (但與你的問題應該無關)

    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
            Timer1.Enabled = True
        End Sub
     
        Private Sub Timer1_Tick(ByVal sender As ObjectByVal e As System.EventArgsHandles Timer1.Tick
            Label1.Text = Now.ToString("HH:mm:ss")
        End Sub
    End Class

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。



    2011年11月13日 上午 09:21
    版主
  • 1. If txtCurrentTime.Text.ToString = txtNextTime.Text.ToString Then

    有點多此一舉 TextBox 的Text屬性本身就是 String 了 不需要再ToString

    2. Forms.Timer 是UI執行緒中執行的 會受系統忙碌與否 而影響

    如果你的 txtCurrentTime.Text及txtNextTime.Text是由另一個Forms.Timer來控制產生的話

    有可能會因為系統的問題而使得資料有問題

    如果不是是由另一個Forms.Timer來控制產生的話, 應該不需要用timer去判斷兩個text是否相等


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2011年11月13日 下午 03:18

所有回覆

  • 兩個"程式"  指的是甚麼?

     


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2011年11月12日 上午 04:40
  • 兩個程式 ? 兩個exe ? 還是指同一個exe中的兩個 Method ?

    然後你說兩個, 貼出來的程式碼也只有一個 ?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年11月12日 上午 05:55
    版主
  • 兩個程式 ? 兩個exe ? 還是指同一個exe中的兩個 Method ?

    然後你說兩個, 貼出來的程式碼也只有一個 ?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    您好! 非常抱歉我沒說清楚

    是同一個 exe, 開2個一樣exe

    2011年11月12日 上午 10:29
  • 設中斷點逐步執行,你應該就知道問題在哪了。

    你的程式碼與你的說明矛盾,你應該標清楚網友看不懂的地方,簡單的帶過去,對於網友來說,還是不知道你在說啥。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年11月12日 下午 03:40
  • 在2個程式的timmer 用 call 時,如果第1個call執行中,第2個(另一個程式)的call就會不動 or 意料之外的結果。這完全因應call 的內容跟 call執行時間而看。

     

    2011年11月13日 上午 09:15
  • 我試著作了一個程式測試, 沒發生你說的問題, 所以你的 btnPayItem_Click 倒底做了什麼事 ?

    順帶一提, 把    Call MainForm.btnPayItem_Click(sender, e) 改成 btnPayItem.performclick() 會好一點 (但與你的問題應該無關)

    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
            Timer1.Enabled = True
        End Sub
     
        Private Sub Timer1_Tick(ByVal sender As ObjectByVal e As System.EventArgsHandles Timer1.Tick
            Label1.Text = Now.ToString("HH:mm:ss")
        End Sub
    End Class

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。



    2011年11月13日 上午 09:21
    版主
  • 1. If txtCurrentTime.Text.ToString = txtNextTime.Text.ToString Then

    有點多此一舉 TextBox 的Text屬性本身就是 String 了 不需要再ToString

    2. Forms.Timer 是UI執行緒中執行的 會受系統忙碌與否 而影響

    如果你的 txtCurrentTime.Text及txtNextTime.Text是由另一個Forms.Timer來控制產生的話

    有可能會因為系統的問題而使得資料有問題

    如果不是是由另一個Forms.Timer來控制產生的話, 應該不需要用timer去判斷兩個text是否相等


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2011年11月13日 下午 03:18