Exemplo n.º 1
0
 private static void ProceesArray2dWork(Array2dWork work)
 {
     ThreadedResize(ref work.ArrayToResize, work.TargetWidth, work.TargetHeight);
     if (work.CompleteHandler != null)
     {
         work.CompleteHandler(work.ArrayToResize);
     }
 }
Exemplo n.º 2
0
        private static void WorkerResize(object sender, DoWorkEventArgs args)
        {
            Array2dWork workargs = (Array2dWork)(args.Argument);

            ProceesArray2dWork(workargs);
            while (_workerQueue.Count > 0)
            {
                workargs = _workerQueue.Dequeue();
                ProceesArray2dWork(workargs);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }