2

エラーが表示されません。誰かがここで私を助けてくれるかもしれません。

スピンロックを使用したカスタム ロックがあります (学校用です)。

 public class Spinlock : Locker
{
    Boolean locked = false;
    private SpinLock spinLock = new SpinLock();

    public override void LockIt()
    {
        try
        {
            spinLock.Enter(ref locked);
        }
        finally
        {
            if(locked)
                spinLock.Exit();
        }
    }

    public override void UnlockIt()
    {
    }
}

 public abstract class Locker
{
    abstract public void LockIt();
    abstract public void UnlockIt();
}

私が得る例外は次のとおりです。

System.ArgumentException が処理されませんでした

Message=このメソッドを呼び出す前に、takeLock 引数を false に設定する必要があります。

4

2 に答える 2

0

コードは私にとってはうまく機能します。ロックを入力する前に (spinLock.Enter)、locked が false であることを確認する必要があります。そうしないと、この例外が発生します。

コードの他の部分がその変数を上書きしているようです。

于 2013-09-22T13:40:53.493 に答える