私はここで非常に混乱しており、フレームワーク (4.0) がこれまでオンラインで見つけた回答の一部をサポートしているかどうかわかりません。
私は次の構造を持っています
public class Form1()
{
public int GenerateID(OtherThreadObj oto)
{
int result;
if (this.InvokeRequired)
{
return (int)this.Invoke((MethodInvoker)delegate { GenerateIDSafe(oto); });
// now this doesn't work obviously. I was looking at .begininvoke, end, etc and got really lost there
}
else
{
return GenerateIDSafe(oto);
}
}
private int GenerateIDSafe(OtherThreadObj oto)
{
return oto.id.ToSuperID(); // Assume ToSuperID some extension method.
}
}
ここでのアイデアは、Generate ID を別の Thread から呼び出して、その戻り値を取得することです。
public class OtherThreadObj
{
private Form1 parentform;
private int GetSuperID()
{
return parentform.GenerateID(this);
}
}
明らかに、.Invoke で正しいリターンが得られないため、上記は良くありません。これを適切に行う方法について、私は完全に迷っています。