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
}
有沒有人知道一種方式來確定這種方式,它永遠不會失敗?
如果他們有相同的時間戳,那麼你只能根據文件的內容或文件的命名來判斷。將消息寫入磁盤的過程應該負責確保如果對讀取消息內容至關重要,應該很容易確定排序順序。 – Igor
文件時間根本沒有那個準確性。您不需要計算兩個DateTime值之間的差異,只需直接比較它們即可。如果要確定消息順序,請確保使用包含增加的後綴 –
的名稱存儲文件名。建議是有效的。由於我編寫了接收消息的監聽器,因此我可以爲這個測試用例添加一個標誌,並且只需在將消息寫入磁盤並關閉時添加一個暫停。然後它從未失敗。最簡單的解決方案 – Jake