Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Проверка в конструкторе https://www.cyberforum.ru/ csharp-beginners/ thread2332919.html
Здравствуйте. Мне необходимо написать конструктор с тремя параметрами, в котором будет выполняться проверка введенного значения. А точнее, если конкретное значение не введено, необходимо присвоить...
C# Инициализация полей структур
Насколько знаю, у экземпляров классов поля всегда инициализируются значениями по умолчанию перед тем как в дело вступает конструктор. Почему у структур для инициализации полей используется...
C# Шахматная доска
Стыдно, но спрошу ) Как этот код сделать компактнее? Заполнить массив шахматной доски цветом, соответствующим каждой клетке(0 - белый, 1 - черный) и вывести на экран в консоль в виде доски(каждый...
C# Selenium Driver. Нажатие на элемент Нужно нажать на ссылку <div class="msgDv2 blk"> <a href="javascript:;" onclick="wClose()" class="button small2 orange"> <span>Close</span> <a> </div> Пытался кликнуть так https://www.cyberforum.ru/ csharp-beginners/ thread2332869.html
C# Справочник через деревья https://www.cyberforum.ru/ csharp-beginners/ thread2332818.html
Добрый день, помогите с деревьями теорию я понял, вот реализация хромает: Нужно создать дерево как справочник(номер, имя, фамилия) с процедурами вставки, поиска и определения.
C# С клавиатуры задать количество знаков после запятой
Есть такой код: static void Main(string args) { double f, n = 1, x; for (x = 0.1; x < 0.9; x = x + 0.1) { f =...
C# Почему System.Activator.CreateInstance<T>() позволяет создавать объект в любом случае?
Почему System.Activator.CreateInstance<T>() позволяет создавать объект класс в любом случае? Точнее, даже в том, если в типе нет конструктора без параметров (а он, как известно, определяется лишь в...
C# Написать функцию, которая сравнивает 2 целых числа и возвращает результат Добрый день, помогите пожалуйста написать программу: Написать функцию, которая сравнивает 2 целых числа и возвращает результат сравнения в виде одного из знаков: >, < или =. https://www.cyberforum.ru/ csharp-beginners/ thread2332752.html
C# Двусвязный список https://www.cyberforum.ru/ csharp-beginners/ thread2332734.html
Приветствую всех. Искал информацию про двусвязный список нашел вот это ТЫК, кое что доже понял:) Вопрос разъясните почему используется наследование от интерфейса IEnumerable<T> И как я могу...
C# Подсчет числа слов в текстовом файле Доброго времени суток. подстажите пожалуйста как можно подсчитать слова в тексте? для подсчета символов использую READ() функцию и потом сам написал другую, которой передается считаный символ в виде... https://www.cyberforum.ru/ csharp-beginners/ thread2332721.html
Администратор
Эксперт .NET
12936 / 10547 / 4365
Регистрация: 17.03.2014
Сообщений: 21,260
Записей в блоге: 1
28.04.2019, 22:39 0

Как архивировать Dictionary<string, Dictionary<string, decimal[,]>>

28.04.2019, 22:39. Просмотров 1987. Ответов 16
Метки (Все метки)

Лучший ответ Сообщение было отмечено Passerby как решение

Решение

Passerby, во-первых, всегда следует приводить текст ошибки. Во-вторых, каждый Task должен писать в свой MemoryStream. Иначе данные перепутаются или придется синхронизировать доступ к общему MemoryStream что лишит смысла применение Task. В третьих, сериализация через BinaryFormatter здесь не нужна.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Dictionary<string, decimal> dict = new Dictionary<string, decimal>() { { "a", 10m }, { "b", 9 }, { "c", 8 }, { "d", 11 }, { "e", 12 }, { "f", 3 } };
           
Task<MemoryStream> task1 = new Task<MemoryStream>(() =>
                         {
                            MemoryStream mstream = new MemoryStream(); 
                             using (var gzipStream = new GZipStream(mstream, CompressionMode.Compress, leaveOpen:true))
                             {
                                 var formatter = new BinaryFormatter();
                                 formatter.Serialize(gzipStream, dict);
                             }
                             mstream.Position = 0;
                             return mstream;
                         });
                         
task1.Start();
await Task.WhenAll(task1/*, task2, task3, task4, task5, task6*/);
//using (Stream fStream = new FileStream("dict" + ".dat",
//                                                    FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
using (Stream fStream = File.Create(@"c:\my\dict" + ".dat"))
{
    var mstream = task1.Result;
    mstream.CopyTo(fStream);
    mstream.Dispose();
}
 
Dictionary<string, decimal> dict1;
using (var fstream = File.OpenRead("dict.dat"))
using (var gzipStream = new GZipStream(fstream, CompressionMode.Decompress))
{
    var formatter = new BinaryFormatter();
    dict1 = (Dictionary<string, decimal>)formatter.Deserialize(gzipStream);
}
Добавлено через 9 минут
И еще лучше бы убрать FileShare.Write.

Вернуться к обсуждению:
Как архивировать Dictionary<string, Dictionary<string, decimal[,]>>
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2019, 22:39
Готовые ответы и решения:

Dictionary<Tuple<string,string>, Dictionary<int,int>> dict - возможно ли?
Собственно вопрос в заголовке. Возможно ли использовать объект вида...

Как выдернуть данные из Dictionary<string,string>.Enumerator?
Есть библиотека xNet. Когда делаешь http запрос вот так: var ss =...

Как преобразовать Dictionary<string, int> в Dictionary<object, int>
Есть метод с сигнатурой public KeyValuePair&lt;string, int&gt; MyMethod(Dictionary&lt;string, int&gt; dic,...

Сложный Dictionary<MyClass, Dictionary<List<MyClass2>, List<string>>> MyDictionary
Здравствуйте. Помогите plz реализовать обращения к словарю вида : Dictionary&lt;MyClass,...

16
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.