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'塊直到線程完成。你可以運行你的代碼同步... –