Beispiel #1
0
		public override void ReleaseRunspace(Runspace runspace)
		{
			bool flag;
			Func<Item<Runspace>, bool> func = null;
			runspace.ResetRunspaceState();
			lock (this._runspaceCache.TimerServicingSyncObject)
			{
				IEnumerable<Item<Runspace>> items = this._runspaceCache.Cast<Item<Runspace>>();
				if (func == null)
				{
					func = (Item<Runspace> item) => item.InstanceId == runspace.InstanceId;
				}
				foreach (Item<Runspace> item1 in items.Where<Item<Runspace>>(func))
				{
					item1.Busy = false;
					flag = true;
				}
				if (!flag)
				{
					throw new InvalidOperationException();
				}
			}
			if (this._maxRunspaces != -1)
			{
				this.CheckAndStartRequestServicingThread();
			}
		}
Beispiel #2
0
 public virtual void ResetRunspaceState()
 {
     runspace.ResetRunspaceState();
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="runspace"></param>
        public override void ReleaseRunspace(Runspace runspace)
        {
            runspace.ResetRunspaceState();
            lock(_runspaceCache.TimerServicingSyncObject)
            {
                bool found = false;
                foreach (Item<Runspace> item in
                    _runspaceCache.Cast<Item<Runspace>>().Where(item => item.InstanceId == runspace.InstanceId))
                {
                    item.Busy = false;
                    found = true;
                }

                if (!found)
                    throw new InvalidOperationException();
            }

            if (_maxRunspaces != MaxRunspacesPossible)
                CheckAndStartRequestServicingThread();
        }