1
使用有关从here的lambda运算符的答案,我有一个接受参数并正常工作的线程。不过,我希望能够从线程中获取东西。这是代码的样子:如何从一个带参数的线程返回一个值?
namespace Renamer
{
class RenameThread
{
public Thread StartRename(bool commit, ICollection checkeditems, ArrayList rules)
{
var t = new Thread(() => doRename(commit, checkeditems, rules));
t.Start();
return t;
}
private void doRename(bool commit, ICollection checkeditems, ArrayList rules)
{
ArrayList filenames = new ArrayList();
ArrayList newfilenames = new ArrayList();
filenames.AddRange(checkeditems);
//do stuff with filenames
//I want to be able to return newfilenames (or perhaps some object that contains it)
}
}
}
它从点击一个按钮叫:
private void btnTest_Click(object sender, EventArgs e)
{
RenameThread rt = new RenameThread();
Thread renameThread = rt.StartRename(false, clbFiles.CheckedItems, rules);
renameThread.Join();
}
在Java我只是执行Runnable
这样我就可以得到线程的成员直接访问字段,如果我需要它们,但由于我不能从Thread
继承,所以我对我应该做什么感到有点不知所措。
'Thread.Join'块直到线程完成。你可以运行你的代码同步... –