[fix]修正UdpServer在接收广播时连续启动接收的错误,在StarAgent中,此时可能收到广播包,SocketFlags是Broadcast,需要清空,否则报错“参考的对象类型不支持尝试的操作”; 无需设置SocketOptionName.PacketInformation,在ReceiveMessageFromAsync时会自动设置,并且支持ipv6;
石头
编写于
2024-10-10 00:36:00
石头
提交于
2024-10-10 00:45:43
X
using System;
using System.Data;
using System.Data.Common;
namespace XCode.TDengine
{
/// <summary>事务</summary>
public class TDengineTransaction : DbTransaction
{
private TDengineConnection _connection;
private readonly IsolationLevel _isolationLevel;
//private Boolean _completed;
internal TDengineTransaction(TDengineConnection connection, IsolationLevel isolationLevel)
{
_connection = connection;
_isolationLevel = isolationLevel;
Begin();
}
/// <summary>销毁</summary>
/// <param name="disposing"></param>
protected override void Dispose(Boolean disposing)
{
if (disposing && _connection.State == ConnectionState.Open)
{
if (_connection._transactionLevel > 0)
{
_connection.Execute("ROLLBACK;");
_connection.Transaction = null;
}
}
}
/// <summary>数据库连接</summary>
protected override DbConnection DbConnection => _connection;
/// <summary>等级</summary>
public override IsolationLevel IsolationLevel => _isolationLevel;
/// <summary>开始事务</summary>
public virtual void Begin()
{
if (_connection._transactionLevel++ > 0) return;
_connection.Execute("BEGIN;");
}
/// <summary>提交事务</summary>
public override void Commit()
{
if (--_connection._transactionLevel > 0) return;
_connection.Execute("COMMIT;");
_connection.Transaction = null;
}
/// <summary>回滚事务</summary>
public override void Rollback()
{
if (--_connection._transactionLevel > 0) return;
_connection.Execute("ROLLBACK;");
_connection.Transaction = null;
}
}
}
|