Example #1
0
        public static async Task Consume(BufferBlock <object> queue)
        {
            while (await queue.OutputAvailableAsync())
            {
                object item = await queue.ReceiveAsync();

                if (item.GetType().Equals(typeof(ScanInfo)))
                {
                    ScanInfo info = item as ScanInfo;
                    folderLogger.Info($"{info.Path}|{info.Size}|1|{info.ErrorMessage}|{DateTime.Now}");
                }
                else
                {
                    FileInfo file = item as FileInfo;
                    long     size = 0;
                    string   err  = String.Empty;

                    try
                    {
                        size = file.Length;
                    }
                    catch (Exception ex)
                    {
                        err = ex.Message;
                    }

                    fileLogger.Info($"{file.FullName}|{size}|0|{err}|{DateTime.Now}");
                }
            }
        }
Example #2
0
        public long GetDirectorySize(DirectoryInfo dir)
        {
            ScanInfo folderInfo = new ScanInfo(dir);

            try
            {
                folderInfo.AddSize(dir.EnumerateFiles().Sum(file => {
                    OnScan(file);
                    return(file.Length);
                }));

                folderInfo.AddSize(dir.EnumerateDirectories().Sum(folder => {
                    return(GetDirectorySize(folder));
                }));
            }
            catch (Exception ex)
            {
                folderInfo.SetErrorMessage(ex.Message);
            }

            OnScan(folderInfo);
            return(folderInfo.Size);
        }
Example #3
0
 protected virtual void OnScan(ScanInfo info)
 {
     ItemScanned?.Invoke(this, info);
 }