合并主线最近几年来的主要更新,重点推进TinyHttpClient,替代HttpClient
大石头 authored at 2023-03-08 18:39:12
1.09 KiB
X_NET20
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);
		}
	}
}