我创建了一个带参数和返回值的函数。这是以下代码:
static void Main(string[] args)
{
string url = "URL";
Thread thread = new Thread(
() => readFile(url)
);
thread.Start();
}
public static bool readFile(string url)
{
bool result = true;
return result;
}
如何从线程内的方法中获取返回值?
答案 0 :(得分:0)
传递给线程的方法的签名是void method(Object)
,换句话说,它不能返回任何内容。处理此问题的一种方法是允许线程和主代码访问同一个变量,该变量可用于表示结果:
class SomeClass
{
private static bool threadResult;
static void Main(string[] args)
{
string url = "URL";
Thread thread = new Thread(() => readFile(url));
thread.Start();
...
// when thread completed, threadResult can be read
}
private static void readFile(string url)
{
threadResult = true;
}
}
答案 1 :(得分:0)
您应该使用任务来获得结果。像下面的东西
class myClass
{
static void Main(string[] args)
{
Task<ReadFileResult> task = Task<ReadFileResult>.Factory.StartNew(() =>
{
string url = "URL";
return readFile(url));
});
ReadFileResult outcome = task.Result;
}
private static ReadFileResult readFile(string url)
{
ReadFileResult r = new ReadFileResult();
r.isSuccessFull = true;
return r;
}
}
class ReadFileResult
{
public bool isSuccessFull { get; set; }
}
有关详细信息,请参阅此MSDN条目。