How to get return value when BeginInvoke/Invoke is called in C#

前端 未结 6 1877
悲哀的现实
悲哀的现实 2020-12-04 17:57

I\'ve this little method which is supposed to be thread safe. Everything works till i want it to have return value instead of void. How do i get the return value when BeginI

6条回答
  •  旧时难觅i
    2020-12-04 18:30

    You have to Invoke() so you can wait for the function to return and obtain its return value. You'll also need another delegate type. This ought to work:

    public static string readControlText(Control varControl) {
      if (varControl.InvokeRequired) {
        return (string)varControl.Invoke(
          new Func(() => readControlText(varControl))
        );
      }
      else {
        string varText = varControl.Text;
        return varText;
      }
    }
    

提交回复
热议问题