ここからのラムダ演算子に関する回答を使用して、パラメーターを受け入れて正常に動作するスレッドを取得しました。ただし、スレッドからデータを取り戻すことができるようにしたいと思います。コードは次のようになります。
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();
}
Runnable
Javaでは、必要に応じてスレッドのメンバーとフィールドに直接アクセスできるように実装するだけでしたが、継承できないためThread
、何をすべきかについて少し戸惑っています。