값을 반환하고 매개 변수를 사용하는 작업을 어떻게 실행합니까? 오버로드 된 메서드가 있다는 것을 알았습니다. Task.Run<TResult>(Func<TResult>)
하지만 어떻게 매개 변수를 전달할 수 있습니까?Task.Run 및 Func <>
11
A
답변
27
Func<TResult>
매개 변수를 사용하지 않습니다. 일반적으로 매개 변수 대신 람다 식을 사용합니다. 예를 들어 :
text
public void DoSomething(string text)
{
Task<int> task = Task.Run(() => text.Length);
...
}
그래서 심지어 그냥 Func<int>
을 만들 불구하고, 그것은 메소드 매개 변수를 사용하여 을의 ... 캡처 변수입니다.
6
Task.Factory.StartNew() 오버로드를 사용하여 사용하려는 모든 매개 변수가 들어있는 "상태"개체를 전달할 수 있습니다. 여기에 NameValueCollection을 전달하는 아주 기본적인 예제가 있지만 원하는 모든 유형의 객체를 전달할 수 있습니다.
Task<bool>.Factory.StartNew(
(a) => {
NameValueCollection nvc = a as NameValueCollection;
if(nvc != null) {
nvc.AllKeys.ForEach(k => Console.WriteLine(nvc[k]));
}
return true;
},
new NameValueCollection() { { "param1", "hithere!" } });
관련 문제
- 1. 표현식 <func>?
- 2. buym 방법 <Func<T,bool>> 표현식 <Func<T>>
- 3. 단일 파라미터에서 Func <T> 및 표현식 <Func<T>을 가져 옵니까?
- 4. 캡슐화 동작 <T> 및 Func <T>?
- 5. C# Func <> 및 제네릭
- 6. Lambda Func <> 및 Fluent
- 7. 복잡한 표현식을 <Func<TDTO>, bool>을 Expression <Func <TEntity>, bool>
- 8. Expression <Func <TypeIn, TypeOut1 >>에서 Expression <Func <TypeIn, TypeOut2 >>로 변환
- 9. 일반 Max를 구현하는 방법 <TSource> (Func <TSource, TSource> func)
- 10. 동적 표현 만들기 <Func<T,Y>>
- 11. 목록을 serialize하십시오 <Func<T>>
- 12. System.Linq.Expressions.Expression의 TKey는 무엇입니까? <Func <TSource, TKey >>?
- 13. Expression.LessThan 대 LambdaExpression <Func <ParamType, object >>
- 14. 캐시 컴파일 <Func<T>>
- 15. Func <TObject, bool> 또는 술부 <TObject>?
- 16. Func <> 결과에 값을 할당하십시오.
- 17. Func <DerivedFromT, object>에서 Func으로 구성원 액세스 func 캐스팅 <T,object>
- 18. Func <T, string> []을 Func <T, string[]>로 변환 하시겠습니까?
- 19. Func <T>에서 Func <Interface>에 할당 할 수 없습니다.
- 20. 어떻게 Func <out TResult> 반환 Func <out TResult>?
- 21. Func <T, string>을 Func <동적 문자열>로 변환하는 방법이 있습니까?
- 22. Func <object, bool>의 매개 변수로 Func <T, bool>을 사용하는 방법?
- 23. const vs Func <string>
- 24. 이해 func <T, TResult> C#
- 25. Func <TSource, TKey> keySelector 오류
- 26. Nullable Func <T, TResult>
- 27. 왜 Func <>과 Expression <Func<>> 교환 가능합니까? 내 경우에는 왜 일하는거야?
- 28. Func <T>은 암시 적으로 표현식 <Func<T>>으로 어떻게 변환됩니까?</p>이 <p>이 라인 모두 컴파일 :
- 29. Expr <'a -> 'b>을 (를) Expression <Func <'a, obj>>
- 30. 식 <Func <T, bool>>을 술부로 변환하는 방법 <T>
스레드가 안전합니까? – BVernon
@BVernon : 나중에'text'의 값을 변경하지 않는다고 가정하면, 괜찮아 보입니다. –
나는 정말로 기본적인 것들을 잊고 있다고 생각한다. DoSomething을 텍스트에 대해 다른 값으로 여러 번 호출하면 각 호출마다 메모리에 각 버전의 복사본이 생기 겠지? – BVernon