• Как найти где NullReferenceException?

    twobomb
    @twobomb
    Хех, так Dictinary же не потокобезопасный. Вам нужна или потокобезопасная коллекция или лок ставьте.
    В FileMapper добавьте где-нибудь
    private static object locker = new object();
    И попробуй переписать на такое

    private async Task checkFile(string path)
            {
                var fileType = await getFileAsync(path);
                
                    if (fileType.FileExtension != "None")
                    {
                          lock(locker){
                            this.filesMap.Add(path, fileType);
    }                    
                    }
                
            }

    P.S. Thread-Safe Collections
    Ответ написан
    3 комментария
  • Как начать цикл не в перовом байте файла?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    /// <summary>
            /// Get bytes from file
            /// </summary>
            /// <param name="path">path to file</param>
            /// <param name="startByte">0 based position</param>
            /// <param name="bytesToRead">Count of bytes to read</param>
            /// <returns></returns>
            public static string[] GetXData(string path, int startByte, int bytesToRead)
            {
                try
                {
                    var header = new string[bytesToRead];
                    using var stream = File.OpenRead(path);
                    stream.Seek(startByte, SeekOrigin.Begin); // перемещаем указатель в позицию
                   // увеличиваем от 0 до длины буфера!!!
                    for (var i = 0; i < header.Length ; i++)
                    {
                         // когда читаем по байту сдвиг указателя происходит автоматически
                        header[i] = (stream.ReadByte().ToString("X2"));
                    }
                    return header;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return new string[0];
                }
            }
    Ответ написан
    Комментировать