Model.MasterComponent.Lock C# (CSharp) Méthode

Lock() public méthode

public Lock ( string address ) : Task
address string
Résultat Task
		public Task<bool> Lock(string address)
		{
			TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
			
			if (this.lockedAddress == "")
			{
				this.lockedAddress = address;
				tcs.SetResult(true);
			}
			else
			{
				LockInfo lockInfo = new LockInfo(address, tcs);
				this.queue.Enqueue(lockInfo);
			}
			return tcs.Task;
		}

Usage Example

Exemple #1
0
        public async Task Lock()
        {
            ++this.lockCount;

            if (this.status == LockStatus.Locked)
            {
                return;
            }
            if (this.status == LockStatus.LockRequesting)
            {
                await WaitLock();

                return;
            }

            this.status = LockStatus.LockRequesting;

            // 真身直接本地请求锁,镜像需要调用Rpc获取锁
            MasterComponent masterComponent = this.GetComponent <MasterComponent>();

            if (masterComponent != null)
            {
                await masterComponent.Lock(this.address);
            }
            else
            {
                RequestLock();
                await WaitLock();
            }
        }