たとえば、シリアル化されたトランザクションを試しています。
public static void Main()
{
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, TimeSpan.FromMinutes(1)))
{
formatter.Serialize(stream, Transaction.Current);
stream.Seek(0, SeekOrigin.Begin);
MemoryStream result = Second(stream);
Transaction transaction = (Transaction)formatter.Deserialize(result);
Console.WriteLine(transaction.TransactionInformation.Status);
}
Console.ReadLine();
}
public static MemoryStream Second(MemoryStream stream)
{
BinaryFormatter formatter = new BinaryFormatter();
Transaction transaction = (Transaction)formatter.Deserialize(stream);
using (TransactionScope scope2 = new TransactionScope(transaction))
{
}
Console.WriteLine(transaction.TransactionInformation.Status);
MemoryStream newStream = new MemoryStream();
formatter.Serialize(newStream, transaction);
newStream.Seek(0, SeekOrigin.Begin);
return newStream;
}
しかし、両方の で、WriteLines
何らかの理由でトランザクションがアクティブであると報告されます。シリアル化せずに同じことを行うと、動作は正常になります(中止されます)が、シリアル化すると突然正常に動作しなくなります。私は何を間違っていますか?