[問題] 幾個新手級的小問題請教各位...

看板C_Sharp (C#)作者 (1+1≠2)時間13年前 (2011/11/17 22:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我要寫的程式有點偏向網路方面,所使用的是Winform介面 假設我是Host1 對方是Host2 問題一: 我必須按下我的Start button才會收到Host2的訊息 Host2會主動建立連線,而我Host1也需要一個ack才能達到雙方完成建立通訊 但是,我會設一個button,而這個button是去詢問Host目前的狀況(ex.idle.busy..等等) 然而,我想在一開始Host2主動建立連線,而我回覆ack時,順便詢問Host2目前的狀況 那麼我該如何寫呢? 問題1: 關於這個問題我是使用Timer去觸發這個內容 System.Timers.Timer timerex = new System.Timers.Timer(1000); //當我回覆Host2的ack訊息後啟動 timerex.Elapsed += new System.Timers.ElapsedEventHandler(Check_Click); //Check_Click按鍵內的事件就是要詢問Host目前的狀況 timerex.AutoReset = false;//設置是執行一次(false) timerex.Enabled = true;//是否執行System.Timers.Timer.Elapsed事件; 這個Timer我是寫在當我收到Host2的建立連線時,所要回給Host2的ack訊息內 因為我只想要在一開始連線時,就先詢問目前的狀況 但是我覺得自己寫的這種方法不是很好??想請問是否有更好的方法?? 我原本是用拉timer元件的方式使用timerex.Elapsed 可是這樣就不能設定AutoReset,也就是達到我一開始就要問Host2的目的 private void timer1_Tick(object sender, EventArgs e){ 詢問Host目前狀況如何? } 使用timer1_Tick的方式,可是變成是Private 從要回給Host2的訊息中,我不能呼叫,這部分我就不會處理了ˊˋ ================================================================== 問題二: 由於Host2回覆的格式有很多種,可能有ASCII.UNSIGN...等等 假設對方回傳的訊息是一筆一筆傳的.. 假設剛剛的詢問對方目前的狀況為何? Host2回傳的訊息會是 L[2] //L代表List,也就是代表傳回的資料會包含兩筆 <A[3] "pc8"> //A代表格式為Ascii <A[4] "idel"> 在解析傳回的內容,我是一層一層的拆解 if Item格式為L{ }else if 格式為A{ "<A[" + lItemNum + "] " + (char)34 + ItemData + (char)34 + ">" } 因為在收資料時,是一筆一筆處理,也就是先丟<A[3] "pc8">,再丟<A[4] "idel"> 但是我必須要在畫面顯示對方目前的號碼和狀態,所以我用一個Label顯示 Machine.Text=Item; Status.Text=Item; 但是,我發現兩筆顯示的都會是idle,請問這有甚麼好辦法解決呢? 我想到的是先用一個陣列存?可是又覺得怪怪的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.31.55
文章代碼(AID): #1EnHO-Fk (C_Sharp)
文章代碼(AID): #1EnHO-Fk (C_Sharp)