方法在单独的线程中运行 - 如何在调用线程中检索其值

发布于 2024-11-07 03:49:15 字数 127 浏览 0 评论 0原文

我有返回某种数据类型的方法

MyType MyMethod()

如果我将此方法运行到单独的线程中,如何在调用线程(调用执行 MyMethod 的其他线程)中检索此返回类型?

I have method that return some data type

MyType MyMethod()

If I am running this method into a separate thread, how can this return type be retrieve in the calling thread (that invokes other thread executing MyMethod)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清风夜微凉 2024-11-14 03:49:15

有很多方法可以做到这一点,这里是一种:

Func<MyType> func = MyMethod;
func.BeginInvoke(ar =>
{
    MyType result = (MyType)func.EndInvoke(ar);
    // Do something useful with result
    ...
},
null);

这是另一种,使用 Task API:

Task.Factory
    .StartNew(new Func<MyType>(MyMethod))
    .ContinueWith(task =>
    {
        MyType result = task.Result;
        // Do something useful with result
        ...
    });

最后一种,使用 Async CTP(C# 5 的预览):

MyType result = await Task.Factory.StartNew<MyType>(MyMethod);
// Do something useful with result
...

There are many ways to do it, here's one:

Func<MyType> func = MyMethod;
func.BeginInvoke(ar =>
{
    MyType result = (MyType)func.EndInvoke(ar);
    // Do something useful with result
    ...
},
null);

Here's another, using the Task API:

Task.Factory
    .StartNew(new Func<MyType>(MyMethod))
    .ContinueWith(task =>
    {
        MyType result = task.Result;
        // Do something useful with result
        ...
    });

And a last one, using the Async CTP (preview of C# 5):

MyType result = await Task.Factory.StartNew<MyType>(MyMethod);
// Do something useful with result
...
z祗昰~ 2024-11-14 03:49:15

我认为 IAsyncResult 模式是你最好的选择。您可以在此处找到更多详细信息。

I think IAsyncResult pattern is your best bet. You can find more details here.

惯饮孤独 2024-11-14 03:49:15

最简单的可能是让两个线程读取/写入同一个静态变量。

该线程虽然略有不同,但也有一些想法: C#中如何使用AOP在不同线程之间共享数据?

Probably the simplest is to have both threads read from/write to the same static variable.

This thread, while slightly different, also has some ideas: How to share data between different threads In C# using AOP?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文