2016-09-29 78 views
0

我有一個問題,我正在接收正在寫入磁盤的HL7消息。問題是兩條消息在同一毫秒內發送,我需要確定哪一條先發現,哪條是第二條。我已經創建了這個代碼來完成這個工作,而且大部分工作。有時雖然它失敗,我得到的值爲零的時間跨度對象的滴答價值。如何確定訂單文件寫入磁盤

DirectoryInfo d_messages = new DirectoryInfo(ConfigSettings.ReadSetting("AllRecievedHL7")); 
d_messages.Refresh(); 
FileInfo[] messages = d_messages.GetFiles(); 

DateTime Message1 = messages[0].CreationTime; 
DateTime Message2 = messages[1].CreationTime; 
TimeSpan t_Test = Message1.Subtract(Message2); 

if (t_Test.Ticks > 0) 
{ 
//Message2 arrived before Message1 
} 
else 
{ 
//Message1 arrived before Message2 
} 

有沒有人知道一種方式來確定這種方式,它永遠不會失敗?

+2

如果他們有相同的時間戳,那麼你只能根據文件的內容或文件的命名來判斷。將消息寫入磁盤的過程應該負責確保如果對讀取消息內容至關重要,應該很容易確定排序順序。 – Igor

+1

文件時間根本沒有那個準確性。您不需要計算兩個DateTime值之間的差異,只需直接比較它們即可。如果要確定消息順序,請確保使用包含增加的後綴 –

+0

的名稱存儲文件名。建議是有效的。由於我編寫了接收消息的監聽器,因此我可以爲這個測試用例添加一個標誌,並且只需在將消息寫入磁盤並關閉時添加一個暫停。然後它從未失敗。最簡單的解決方案 – Jake

回答

0

由於我編寫了接收這些消息的接口,我所做的只是添加睡眠。我在這個特定的測試運行時設置了一個標誌,並在收到的消息之間添加了這一行。爲我完美工作。

Thread.Sleep(500);