开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 791|回复: 1

task 调用函数问题 求助大神

[复制链接]

0

精华

10

贡献

126

赞扬

关注 [开发者网] 微信公众号认证

帖子
7
软币
271
在线时间
14 小时
注册时间
2023-4-12
发表于 2023-5-25 15:52:40 | 显示全部楼层 |阅读模式
    DataTable d1, d2, d3;
        private void button3_Click(object sender, EventArgs e)
        {
            Task T1 = new Task(()=>getValue("1",d1));
            Task T2 = new Task(() => getValue("2", d2));
            Task T3 = new Task(() => getValue("3", d3));
            T1.Start();
            T2.Start();
            T3.Start();
            Task.WaitAll(T1,T2,T3);

            MessageBox.Show("ok");
        }

        private void getValue(String V1,DataTable T)
        {
            T = new DataTable();
            T.Columns.Add("A1");

            if (V1.Equals("1"))
            {
               T.Rows.Add("1");
            }

            if (V1.Equals("2"))
            {
                T.Rows.Add("2");
            }

            if (V1.Equals("3"))
            {
                T.Rows.Add("3");
            }
        }

     为什么最后d1,d2,d3全等于null   ???????

回复

使用道具 举报

0

精华

20

贡献

917

赞扬

帖子
97
软币
2259
在线时间
190 小时
注册时间
2014-5-26
发表于 2023-5-29 22:42:06 | 显示全部楼层

尝试加上 out 修饰符试试?

[C#] 纯文本查看 复制代码
private void button1_Click(object sender, EventArgs e)
{
    var T1 = new Task(() => getValue("1", out d1));
    var T2 = new Task(() => getValue("2", out d2));
    var T3 = new Task(() => getValue("3", out d3));
    T1.Start();
    T2.Start();
    T3.Start();
    Task.WaitAll(T1, T2, T3);

    MessageBox.Show("ok");
}

private void getValue(string V1, out DataTable T)
{
    T = new DataTable();
    T.Columns.Add("A1");

    switch (V1)
    {
        case "1":
            T.Rows.Add("1");
            break;
        case "2":
            T.Rows.Add("2");
            break;
        case "3":
            T.Rows.Add("3");
            break;
    }
}

回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-4-29 07:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表