C#线程方法返回一个值?

标签 c# multithreading return void

<分区>

Possible Duplicate:
Access return value from Thread.Start()'s delegate function

public string sayHello(string name)
{
    return "Hello ,"+ name;
}

如何在 Thread 中使用这个方法?

ThreadStart 方法只接受 void 方法。

我在等你的帮助。 谢谢。

最佳答案

ThreadStart 不仅期望 void 方法,还期望它们不接受任何参数!您可以将其包装在 lambda、匿名委托(delegate)或命名静态函数中。

这是一种实现方式:

string res = null;
Thread newThread = new Thread(() => {res = sayHello("world!");});
newThread.Start();
newThread.Join(1000);
Console.Writeline(res);

这是另一种语法:

Thread newThread = new Thread(delegate() {sayHello("world!");});
newThread.Start();

第三种语法(带有命名函数)最无聊:

// Define a "wrapper" function
static void WrapSayHello() {
    sayHello("world!);
}

// Call it from some other place
Thread newThread = new Thread(WrapSayHello);
newThread.Start();

关于C#线程方法返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860141/

相关文章:

c# - 从其他应用程序调试 C# 代码

c# - 将 C header 转换为 C# - 结构内固定字符数组的 ByValArray 与 ByValTStr

java - 如何显示来自另一个线程的警报对话?

python - Python中函数打印和打印函数输出之间的差异

javascript - 在 Unityscript 中更改按钮的背景

c# - 在c#中使用openxml sdk创建xlsx文件

javascript - 如何使用 return $.post - undefined 不是对象(评估 'function().then' )

javascript - 在 JavaScript 中返回

android - 从线程传递消息以更新 UI

c# - 参差不齐的任务数组 - 并发问题