private void ProcessIStackItem(IStackItem item, bool silenceEvents = false)
 {
     if (!item.IsProcessed)
     {
         item.Process();
         item.IsProcessed = true;
         if (!silenceEvents)
         {
             ItemProcessed?.BeginInvoke(this, item, null, null);
         }
     }
 }
Ejemplo n.º 2
0
        public BaseFlowBlock(int capacity    = 1000, BlockType procType = BlockType.Transform,
                             int threadCount = 4)
        {
            _id = __id;
            Interlocked.Increment(ref __id);
            _linkedBlockCompletions = new List <Task>();
            ProcType           = procType;
            _onCompletionTasks = new List <Task>();
            var options = new DataflowBlockOptions()
            {
                BoundedCapacity = capacity
            };

            _buffer = new BufferBlock <TIn>(options);
            var ops = new DataflowLinkOptions {
                PropagateCompletion = true
            };
            var executionBlockOptions = new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = threadCount,
                BoundedCapacity        = capacity
            };

            switch (procType)
            {
            case BlockType.Action:
                _actionBlock = new ActionBlock <TIn>((item) =>
                {
                    var receivedResult = OnBlockReceived(item);
                    //So that we can actually make a link
                    ItemProcessed?.Invoke(receivedResult);
                }, executionBlockOptions);
                _buffer.LinkTo(_actionBlock, ops);

                break;

            case BlockType.Transform:
                _transformer = new TransformBlock <TIn, TOut>(
                    new Func <TIn, TOut>(OnBlockReceived), executionBlockOptions);
                _transformLinkInstance = _buffer.LinkTo(_transformer, ops);
                break;

            default:
                throw new Exception("Not supported");
            }
        }
Ejemplo n.º 3
0
 public EventExamples()
 {
     OrderProcessed?.Invoke(null, EventArgs.Empty);
     ItemRequested?.Invoke(null, new VendingRequestArgs(1));
     ItemProcessed?.Invoke(null, new VendingRequestArgs(99));
 }
Ejemplo n.º 4
0
        private Tuple <bool, string> RecursiveRenamer(DirectoryInfo directory)
        {
            try
            {
                if (abortSearch)
                {
                    return(abortReturn);
                }

                foreach (var currentFile in directory.GetFiles())
                {
                    if (abortSearch)
                    {
                        return(abortReturn);
                    }

                    if (renameProcessor.IsMatch(currentFile.Name, ItemType.File))
                    {
                        var oldName = currentFile.Name;
                        var newName = renameProcessor.RefactoredName(currentFile.Name, ItemType.File);

                        while (File.Exists(currentFile.DirectoryName + "\\" + newName))
                        {
                            newName = Path.GetFileNameWithoutExtension(newName) + "_2" + Path.GetExtension(newName);
                        }

                        currentFile.MoveTo(currentFile.DirectoryName + "\\" + newName);

                        AddFileToLastChanges(currentFile.DirectoryName + "\\" + oldName,
                                             currentFile.DirectoryName + "\\" + newName);

                        ItemProcessed?.Invoke(directory.FullName, oldName, newName);
                    }
                    else
                    {
                        ItemProcessed?.Invoke(directory.FullName, currentFile.Name, "Name nicht geändert");
                    }
                }

                if (includeSubfolders)
                {
                    if (abortSearch)
                    {
                        return(abortReturn);
                    }

                    foreach (var currentDirectory in directory.GetDirectories())
                    {
                        var retVal = RecursiveRenamer(currentDirectory);

                        if (!retVal.Item1)
                        {
                            return(retVal);
                        }
                    }
                }

                if (abortSearch)
                {
                    return(abortReturn);
                }

                if (changeFolderNames)
                {
                    if (renameProcessor.IsMatch(directory.Name, ItemType.Directory))
                    {
                        var oldName = directory.Name;
                        var newName = renameProcessor.RefactoredName(directory.Name, ItemType.Directory);

                        if (directory.Parent != null)
                        {
                            var fullOldName = directory.Parent.FullName + "\\" + oldName;
                            var fullNewName = directory.Parent.FullName + "\\" + newName;

                            while (Directory.Exists(fullNewName))
                            {
                                fullNewName += "_2";
                            }

                            directory.MoveTo(fullNewName);

                            AddDirectoryToLastChanges(fullOldName, fullNewName);
                        }

                        ItemProcessed?.Invoke(directory.FullName + "\t [Ordnername geändert]", oldName, newName);
                    }
                }
            }
            catch (Exception except)
            {
                return(new Tuple <bool, string>(false, except.Message));
            }
            return(new Tuple <bool, string>(true, String.Empty));
        }
Ejemplo n.º 5
0
 protected virtual void OnItemFinished(T item)
 {
     ItemProcessed?.Invoke(item);
 }
Ejemplo n.º 6
0
 private void OnItemProcessed(T item)
 {
     ItemProcessed?.Invoke(item);
 }
Ejemplo n.º 7
0
 private void OnItemProcessed()
 {
     ItemProcessed?.Invoke(this, new EventArgs());
 }
 public void ItemProcessedEvent(LogEntry logEntry, int count, int total)
 {
     ItemProcessed?.Invoke(null, new MigrationItemEventArgs {
         LogEntry = logEntry, Count = count, Total = total
     });
 }