public ThreadClass(string Name, ThreadCallback Callback) { this.Name = Name; this.Callback = Callback; Counter = 0; Stop = false; }
public static void StartThread(ThreadHandler handler, ThreadCallback callback, object arg) { // 考虑到对LinkedList的资源竞争,所以必须在主线程中调用 if (!Engine.IsMainContext()) throw new Exception("仅允许在主逻辑线程中调用此方法"); if (handler == null) throw new ArgumentNullException("执行体不能为null"); // 构建Job对象并进行排队,由于做了并发控制,所以必须要进行排队 listTask.AddLast(new ThreadTask(handler, callback, arg)); }
public string start_thread(string uid, ThreadCallback callback, object state = null) { return(_schedulerService.StartThread(uid, p => { var pythonDictionary = new PythonDictionary { ["thread_uid"] = uid, ["state"] = p.State }; callback(pythonDictionary); }, state)); }
private void RunAtualizaGrid() { Task.Run(() => { while (!ThreadToken.IsCancellationRequested) { if (!ThreadToken.IsCancellationRequested) { Task.Delay(TimeSpan.FromSeconds(1)).Wait(ThreadToken); } if (!ThreadToken.IsCancellationRequested) { ThreadCallback callback = new ThreadCallback(AtualizaGrid); this.Invoke(callback); } } }, ThreadToken); }
// The constructor obtains the state information and the // callback delegate. public ThreadWithState(string h, ThreadCallback callbackDelegate) { host = h; callback = callbackDelegate; }
public ThreadWithState(int x, int y, ThreadCallback tc) { this.x = x; this.y = y; this.callback = tc; }
public static void QueueUserWorkItem(ThreadCallback callback) { ThreadingBridge.ExecuteThreaded(() => { callback(null); }); }
public void Enqueue(Control control, Delegate invoke, ThreadCallback callback, params object[] invokeParams) { this.Enqueue(new ControlInvocationHandler(control.Invoke), callback, new object[] { invoke, invokeParams }); }
public ThreadTask(ThreadHandler handler, ThreadCallback callback, object arg) { mHandler = handler; mCallback = callback; mArg = arg; mOutArg = null; mOutExp = null; // 自行构建线程,但不开始 mThread = new Thread(new ParameterizedThreadStart(ThreadStart)); }
// 完成,引发回调,将变量赋值为null public void Done() { if (mCallback != null && mOutExp == null) { mCallback(mOutArg); } if (mOutExp != null) { // 想办法自动抛出去 Logger.LogException(mOutExp); } mThread = null; mHandler = null; mArg = null; mCallback = null; mOutArg = null; mOutExp = null; }