コードをコンパイルすると、このエラーが発生します。mcs が間違った関数オーバーロードを検索する理由がわかりませんでした。git から現在アクティブな開発バージョンの最新版として mono を使用しています。TaskFactory クラスのソース コードと関数をチェックしました。存在します!
TaskPoc.cs(30,20): エラー CS1502: ` ' に一致する最適なオーバーロードされたメソッドに
System.Threading.Tasks.TaskFactory.StartNew<bool>(System.Func<bool>, System.Threading.Tasks.TaskCreationOptions)
は無効な引数があります /usr/local/lib/mono/4.5/mscorlib.dll (前のエラーに関連するシンボルの場所) TaskPoc. cs(30,56): エラー CS1503: 引数 `#1' は `System.Func<TaskPoc.State,bool>
' 式を型 `System.Func<bool>
'に変換できません
using System;
using System.Threading;
using System.Threading.Tasks;
namespace TaskPoc
{
public class State
{
public int num;
public string str;
}
public class App
{
public static void Main(string[] args)
{
State state = new State();
state.num = 5;
state.str = "Helllllllllllo";
TaskCompletionSource<bool> taskCompletionSource = new TaskCompletionSource<bool>(state);
Task<bool> taskObj = taskCompletionSource.Task;
Func<State, bool> userMethod = (stateObj) =>
{
bool result = TestMethod(stateObj.num, stateObj.str);
taskCompletionSource.SetResult(result);
return result;
};
Task.Factory.StartNew<bool>(userMethod, state);
bool result2 = taskObj.Result;
Console.WriteLine("Result: ", result2.ToString());
}
public static bool TestMethod(int num, string str)
{
Thread.Sleep(1000);
Console.WriteLine(string.Format("{0} {1}", num, str));
return true;
}
}
}