Как отправить значение в формальный параметр в асинхронную задачу? - PullRequest
0 голосов
/ 17 марта 2019

У меня есть асинхронный метод, который вызывается Task.Run. Когда я посылаю строковый формальный параметр, он

...
{
   string objectStr = "SomeData";
   ...
   Task t = Task.Run(async () => Sender(objectStr));
   Thread.Sleep(10); /// IF I REMOVE IT, VALUE WILL SAND EMPTY
   objectStr = string.Empty;
}

public async static void Sender(string info)
{
   /// BODY
}

Конечно, отправлять ссылку на переменную неправильно. Как я могу отправить туда неизменное значение?

1 Ответ

0 голосов
/ 18 марта 2019

Для дублирования строки передайте строку для использования оператора new:

{
   string objectStr = "SomeData";
   //...
   Task t = Task.Run(async () => Sender(new String(objectStr.ToCharArray())));
   objectStr = string.Empty;

}

Это создаст отдельную копию String.

...