Tôi cố gắng để sử dụng spinlock, nhưng ngay cả mã cơ bản nhất này trong một ứng dụng điều khiển đơn luồng ném ngoại lệ sau khi tôi callSpinLock.Exit()spinlock ném SynchronizationLockException
System.Threading.SynchronizationLockException was unhandled by user code
Message=The calling thread does not hold the lock. Source=mscorlib
Dưới đây là toàn bộ mã nguồn. ..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication48
{
class Program
{
static readonly SpinLock SpinLock = new SpinLock();
static void Main(string[] args)
{
bool lockTaken = false;
try
{
SpinLock.Enter(ref lockTaken);
if (lockTaken)
Console.WriteLine("Lock taken");
}
finally
{
if (lockTaken)
SpinLock.Exit();
}
Console.WriteLine("Done");
}
}
}
Thông báo cho biết khóa không thuộc sở hữu của cùng một chuỗi đang gọi Thoát - nhưng từ mã rõ ràng là. –