Код: Выделить всё
Person person = new Person();
person.Name = "Denis";
var list = new ConcurrentBag
();
list.Add(person);
var task = ChangeVariableAsync(list); // задача начинает выполняться
var el = list.Last(p => p.Name == "Denis");
el.Name = "Dmitry";
Console.WriteLine($"New name: {el.Name}");
await task; // ожидаем завершения задачи
// определение асинхронного метода
async Task ChangeVariableAsync(ConcurrentBag people)
{
await Task.Delay(5000);
try
{
var esl = list.Last(p => p.Name == "Denis");
esl.Name += "s";
Console.WriteLine($"Old name: {esl.Name}");
}
catch (Exception)
{
var esl = list.Last(p => p.Name == "Dmitry");
Console.WriteLine($"Old name: {esl.Name}");
}
}
class Person
{
public string Name { get; set; }
}
Как можно запретить пользователю изменять данные во время работы асинхронного метода, чтобы не потерялся смысл асинхронности? (Ведь мы добавляем его именно для того, чтобы основной поток не блокировался).
Или как сделать так, чтобы изменения, которые пытается внести пользователь, не затрагивали сохраненные данные?
У меня просто возникла идея, типа, а что если, пока данные сохраняются, сделать ползунок, показывающий, сколько времени осталось? Или сделать что-то подобное. Что вы думаете?
Или какое решение здесь следует использовать?
Подробнее здесь: https://stackoverflow.com/questions/640 ... at-data-is