我正在尝试 WCF 事务的实现,并提出了 WCF 4.0 是否支持异步事务的想法。
例如,
我有几个启用了客户端\服务事务的服务操作,在客户端,我使用 TransactionScope 并在事务内创建任务来异步调用这些操作。
在这种情况下,我假设事务将正常工作,对吗?
最佳答案
我非常怀疑这一点。如果您开始异步操作,您似乎不再参与原始事务。
我写了一点 LINQPad 测试
void Main()
{
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
try
{
Transaction.Current.Dump("created");
Task.Factory.StartNew(Test);
scope.Complete();
}
catch (Exception e)
{
Console.WriteLine(e);
}
Thread.Sleep(1000);
}
Console.WriteLine("closed");
Thread.Sleep(5000);
}
public void Test()
{
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
Transaction.Current.Dump("test start"); // null
Thread.Sleep(5000);
Console.WriteLine("done");
Transaction.Current.Dump("test end"); // null
}
}
关于wcf - WCF 是否支持异步操作在 TransactionScope 内调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10890569/