优化代码,处理编译警告
大石头 authored at 2023-03-18 21:51:50
1.30 KiB
X
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Threading;

namespace NewLife;

[Serializable]
[ComVisible(true)]
public class OperationCanceledException : SystemException
{
	private const int Result = -2146233029;

	private CancellationToken? token;

	public CancellationToken CancellationToken
	{
		get
		{
			if (!token.HasValue)
			{
				return CancellationToken.None;
			}
			return token.Value;
		}
	}

	public OperationCanceledException()
		: base("The operation was canceled.")
	{
		base.HResult = -2146233029;
	}

	public OperationCanceledException(string message)
		: base(message)
	{
		base.HResult = -2146233029;
	}

	public OperationCanceledException(string message, Exception innerException)
		: base(message, innerException)
	{
		base.HResult = -2146233029;
	}

	protected OperationCanceledException(SerializationInfo info, StreamingContext context)
		: base(info, context)
	{
	}

	public OperationCanceledException(CancellationToken token)
		: this()
	{
		this.token = token;
	}

	public OperationCanceledException(string message, CancellationToken token)
		: this(message)
	{
		this.token = token;
	}

	public OperationCanceledException(string message, Exception innerException, CancellationToken token)
		: base(message, innerException)
	{
		this.token = token;
	}
}