Учитывая следующий код:Передача параметра в Task.Factory.StartNew
string injectedString = "Read string out of HttpContext";
Task.Factory.StartNew(() =>
{
MyClass myClass = new MyClass();
myClass.Method(injectedString);
}
Это лучший способ передать строку в Task/Thread?
Мои проблемы с этим методом:
- ли сборщик мусора знать, когда строка стала из контекста и правильно очистить его?
- Есть ли лучший способ встраивания зависимостей в задачу, нарушающую связь с объектом в основном потоке?
Это в веб-сервисе Asp.Net, если это имеет значение и является потоком огня и забытого типа, я не жду никакого ответа.
Моя строка на самом деле происходит, чтобы считывать из HttpContext
, что одна из причин, почему я впрыскиванием таким образом (Thread не имеет доступа к призывающих потоков HtppContext
)
Вот что мне нужно было знать. Благодарю. Итак, просто чтобы уточнить, каждая введенная ссылка будет дублироваться в новом классе, сгенерированном компилятором? Значит, в памяти у меня было бы две несвязанные строки? – Liam
Это действительно зависит от того, что вы делаете со строками. С тем, что вы здесь указали, объявление всей строки оптимизировано и вместо этого заменяется на экземпляр класса, сгенерированного компилятором, и поле этого класса присваивается значению строковой переменной. Я уточню свой ответ, чтобы понять, что я имею в виду. –