使用反交叉线程函数返回值

时间:2013-08-23 03:19:04

标签: c# winforms

我有这个代码来解决每个人生存的祸根

delegate int GetSelectedIndicesCountCallback(ListBox thing);
private int GetSelectedIndicesCount(ListBox thing)
{
 if (this.InvokeRequired)
 {
  GetSelectedIndicesCountCallback d = new GetSelectedIndicesCountCallback(GetSelectedIndicesCount);
  Invoke(d, new object[] { thing });
 }
 else
 {
  return thing.SelectedIndices.Count;
 }
 return 0;
}

返回0在那里因为没有它就会出错。但是,它总是返回0.我不知道如何让它返回其他值。

2 个答案:

答案 0 :(得分:5)

Control.Invoke的调用将返回您方法的值。您所要做的就是将其投射到int并将其返回。

return (int)Invoke(d, new object[] { thing });

答案 1 :(得分:2)

当需要调用时,您自己调用并忽略返回的值。这就是编译器需要return语句的原因。

您应该返回调用的结果,如:

return (int) Invoke(d, new object[] { thing });