【问题标题】:Dispose delphi DLL changes from c# TransactionScope从 c# TransactionScope 处理 delphi DLL 更改
【发布时间】:2018-01-17 11:59:21
【问题描述】:

我有一个 Delphi DLL,它打开一个到数据库的连接,进行一些更改并在一切正常的情况下提交更改。

DelphiDLLMethod("testingParameter");

我想从 c# 项目中调用 DLL。在这个项目中,我想对同一个数据库进行一些更改,但是如果出现故障,我想回滚所有更改,包括我的代码的更改以及 Delphi DLL 的更改。

using (TransactionScope txn = new TransactionScope())
{
    try
    {
        result = DLLMethod("testingParameter");
        MakeSomeDatabaseChangesFromThisProject();

        txn.Complete();
    }
    catch
    {
        txn.Dispose();
    }
}

我正在使用 TransactionScope 和 Dispose 方法进行测试,我想证明,如果我的代码出现问题,更改会被释放。但是来自 DLL 的更改总是被提交。

【问题讨论】:

  • 您的图书馆需要支持交易。它没有。你不能从外面嫁接它。听起来您应该将所有代码移植到 C#。

标签: c# delphi dll dispose transactionscope


【解决方案1】:

除非 Delphi 库明确提供了一种机制来处理它创建的事务(如果有的话),否则你不能这样做,因为它将与外部 (C#) 端隔离。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多