- Регистрация
- 04.07.2019
- Сообщения
- 19
- Благодарностей
- 2
- Баллы
- 3
Здравствуйте! Если не затруднит, могли бы вы подсказать, как сделать, чтобы сохранение в файл работало правильно в многопотоке?
Есть такой код:
Взят этот кусок кода из конкурсной статьи тут:
Мне нужно, чтобы сохранение в файл работало в многопотоке, в 1 поток всё верно сохраняет, а вот в несколько уже не выходит.
Пробовала лочить так:
Но не помогает.
Может быть нужно использовать другой метод для сохранения данных в файл? А не такой: File.AppendAllText
Или как сделать, чтобы сначала в переменную, а потом в список сохранять?
Может таким образом будет верно работать в многопотоке.
Ещё только разбираюсь, поэтому не судите строго
Есть такой код:
C#:
lock(CommonCode.SyncObject)
{
CommonCode.Parsing P = new CommonCode.Parsing(project.Variables["GetRespond"].Value, project.Variables["url"].Value, CommonCode.SRC, false, project.Lists["DoubleDomains_list"], project.Lists["Empty_list"]);
//собираю результат
StringBuilder sb = new StringBuilder();
//результат:
sb.Append(String.Format("\r\n\r\n", P.Internal_list.Count));
foreach(string ss in P.Internal_list) sb.Append(ss + "\r\n");
lock (SyncObjects.ListSyncer){
File.AppendAllText(project.Directory + @"\Test.txt", sb.ToString(), Encoding.UTF8);
}
}
Мне нужно, чтобы сохранение в файл работало в многопотоке, в 1 поток всё верно сохраняет, а вот в несколько уже не выходит.
Пробовала лочить так:
C#:
lock (SyncObjects.ListSyncer){
File.AppendAllText(project.Directory + @"\Test.txt", sb.ToString(), Encoding.UTF8);
}
Может быть нужно использовать другой метод для сохранения данных в файл? А не такой: File.AppendAllText
Или как сделать, чтобы сначала в переменную, а потом в список сохранять?
Может таким образом будет верно работать в многопотоке.
Ещё только разбираюсь, поэтому не судите строго