2
我減少了我在下面的示例代碼中的問題:爲什麼這個簡單的MSMQ交易升級到DTC?
var inQueue = ".\private$\testqueue";
using (var ts = new TransactionScope())
{
using (var q = new MessageQueue(inQueue, QueueAccessMode.Send))
{
for (var i = 0; i < 100000; ++i)
{
var msg = new Message(i);
q.Send(msg, MessageQueueTransactionType.Automatic);
}
}
ts.Complete();
}
正如你所看到的,所有它不把它寫10萬個整數使用TransactionScope圖案(事務,本地)隊列。我的理解是,這種類型的操作不會升級到DTC交易。
但是,如果在運行時打開組件服務,則可以在本地DTC>事務列表中看到該事務。這意味着交易已經升級了,對嗎?
爲什麼會發生這種情況?在另一個程序中,由於性能不佳,我得到了提示,並且似乎將DTC用於這種簡單的事務可能是一個因素。無論如何,我只是想了解原因。
任何幫助,將不勝感激。
這不是我想聽到的,但它似乎是答案。我的感覺是TransactionScope可以處理,就像它處理SQL事務一樣,但它不會顯示。好吧。感謝您的回覆。 – Barguast