v10.10.2024.0701 使用IJsonHost改进Json序列化
大石头 编写于 2024-07-01 08:36:34 大石头 提交于 2024-07-01 08:48:33
X
namespace System.Threading;

public struct CancellationTokenRegistration : IDisposable, IEquatable<CancellationTokenRegistration>
{
	private int id;

	private CancellationTokenSource source;

	internal CancellationTokenRegistration(int id, CancellationTokenSource source)
	{
		this.id = id;
		this.source = source;
	}

	public void Dispose()
	{
		source?.RemoveCallback(this);
	}

	public bool Equals(CancellationTokenRegistration other)
	{
		if (id == other.id)
		{
			return source == other.source;
		}
		return false;
	}

	public static bool operator ==(CancellationTokenRegistration left, CancellationTokenRegistration right)
	{
		return left.Equals(right);
	}

	public static bool operator !=(CancellationTokenRegistration left, CancellationTokenRegistration right)
	{
		return !left.Equals(right);
	}

	public override int GetHashCode()
	{
		return id.GetHashCode() ^ source.GetHashCode();
	}

	public override bool Equals(object obj)
	{
		if (!(obj is CancellationTokenRegistration))
		{
			return false;
		}
		return Equals((CancellationTokenRegistration)obj);
	}
}