private static void ProceesArray2dWork(Array2dWork work) { ThreadedResize(ref work.ArrayToResize, work.TargetWidth, work.TargetHeight); if (work.CompleteHandler != null) { work.CompleteHandler(work.ArrayToResize); } }
private static void WorkerResize(object sender, DoWorkEventArgs args) { Array2dWork workargs = (Array2dWork)(args.Argument); ProceesArray2dWork(workargs); while (_workerQueue.Count > 0) { workargs = _workerQueue.Dequeue(); ProceesArray2dWork(workargs); } }
public static void Resize(float[,] data, int targetWidth, int targetHeight, int coresToUse, ArrayResizeCompleteHandler completeHandler = null) { _processorCount = coresToUse; Array2dWork work = new Array2dWork() { ArrayToResize = (float[, ])(data.Clone()), TargetHeight = targetHeight, TargetWidth = targetWidth, }; work.CompleteHandler = completeHandler; if (_worker.IsBusy) { _workerQueue.Enqueue(work); } else { _worker.DoWork += WorkerResize; _worker.RunWorkerCompleted += WorkerComplete; _worker.RunWorkerAsync(work); } }