代码之家  ›  专栏  ›  技术社区  ›  Ian manuel aldana

进程.start()上的事务性NTFS(TXF)

  •  2
  • Ian manuel aldana  · 技术社区  · 15 年前

    请考虑以下代码:

    try
    {
        using(TransactionScope)
        {
           Process.Start("SQLInstaller.EXE");
           throw new Exception();
           Commit();
        }
    }
    catch(Exception ex)
    {
    //Do something here
    }
    

    在这种情况下,SQLInstaller.exe所做的更改是否将回滚?更具体地说,通过process.start()启动的外部进程所做的更改是否由txf处理?

    谢谢!

    3 回复  |  直到 15 年前
        1
  •  1
  •   jrtipton    15 年前

    启动进程不会自动处理事务。

    这真的是一个模型是否 隐性的 明确的 . 我们之所以选择显式模型,是因为隐式模型非常难以解释。例如,考虑一下,如果创建的进程停止并发出一个没有通过管道传输事务的RPC调用,会是什么样子:RPC客户机和服务器对世界有一致的视图吗?

    简短回答:不。

        2
  •  0
  •   Jesse C. Slicer    15 年前

    可疑的外部流程完全不了解您的事务范围。如果您是外部进程的编码人员,并且有一种传递事务句柄的方法,当然,但在这种情况下,可能性非常小。

        3
  •  0
  •   Darin Dimitrov    15 年前

    一切都将取决于如何获得文件句柄。如果打开文件时 File.OpenWrite 或者任何标准的.NET文件操作方法,那么您就可以非常确定它的访问不会是事务性的。 CreateFileTransacted 每次打开手柄时都需要使用。

    推荐文章