C# 无法访问任务的结果属性

C# 无法访问任务的结果属性,c#,C#,我想我初始化了“Task(TResult)”,但它发送了这个错误:“Task”不包含“Result”的定义,并且找不到接受“Task”类型的第一个参数的扩展方法“Result”(是否缺少using指令或程序集引用 我在.NET4.0中。是“MySqlParameter[]param=tu.Result;”行产生了错误 Task < MySqlParameter[] > td3 = new Task < MySqlParameter[] > (() = >{

我想我初始化了“Task(TResult)”,但它发送了这个错误:“Task”不包含“Result”的定义,并且找不到接受“Task”类型的第一个参数的扩展方法“Result”(是否缺少using指令或程序集引用

我在.NET4.0中。是“MySqlParameter[]param=tu.Result;”行产生了错误

   Task < MySqlParameter[] > td3 = new Task < MySqlParameter[] > (() = >{
    MySqlParameter[] param = {
        new MySqlParameter("nom", MySqlDbType.String) {
            Value = textBox2.Text
        },
        new MySqlParameter("nom_a", MySqlDbType.String) {
            Value = textBox3.Text
        },
        new MySqlParameter("code", MySqlDbType.String) {
            Value = textBox4.Text.ToUpper()
        },
        new MySqlParameter("ok", MySqlDbType.String) {
            Value = textBox85.Text.ToUpper()
        }
    };
    return param;
});
td3.ContinueWith(tu = >{
    MessageBox.Show(this, Properties.Resources.f_ann + ": \n" + tu.Exception.GetBaseException().Message);

},
new CancellationTokenSource().Token, TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.FromCurrentSynchronizationContext());
td3.ContinueWith(tu = >{
    string sqlm = "update filiere set nom=@nom," + "nom_a=@nom_a, codef=@code" + " where codef='@ok'";
    MySqlParameter[] param = tu.Result;
    conn.Open();
    MySqlHelper.ExecuteNonQuery(conn, sqlm, param);
    td4.Start();
},
new CancellationTokenSource().Token, TaskContinuationOptions.OnlyOnRanToCompletion); * *strong text * *
Tasktd3=新任务(()=>{
MySqlParameter[]参数={
新的MySqlParameter(“nom”,MySqlDbType.String){
Value=textBox2.Text
},
新的MySqlParameter(“nom_a”,MySqlDbType.String){
Value=textBox3.Text
},
新的MySqlParameter(“代码”,MySqlDbType.String){
Value=textBox4.Text.ToUpper()
},
新的MySqlParameter(“确定”,MySqlDbType.String){
Value=textBox85.Text.ToUpper()
}
};
返回参数;
});
td3.继续使用(tu=>{
Show(这个,Properties.Resources.f_ann+“:\n”+tu.Exception.GetBaseException().Message);
},
新建CancellationTokenSource().Token,TaskContinuationOptions.OnlyOnFaulted,TaskScheduler.FromCurrentSynchronizationContext());
td3.继续使用(tu=>{
string sqlm=“update filiere set nom=@nom,”+“nom_a=@nom_a,codef=@code”+“其中codef='@ok';
MySqlParameter[]param=tu.Result;
conn.Open();
ExecuteNonQuery(conn、sqlm、param);
td4.Start();
},
新建CancellationTokenSource().Token,TaskContinuationOptions.OnlyOnRanToCompletion);**强文本**

您选择了错误的重载(只有39个重载)。没有包含3个参数的重载,编译器会忽略它:

td3.ContinueWith
    (tu =>
        {
            MySqlParameter[] param = tu.Result;
        }
    , new CancellationTokenSource().Token
    , TaskContinuationOptions.OnlyOnRanToCompletion
    , TaskScheduler.Default
    );

添加
TaskScheduler.Default
,就像最后一个参数一样。

你能发布一个可编译的代码吗?使用3不能继续arguments@PatrickHofman您能告诉我应该使用.NET4.0API中的哪个重载方法吗?我看不到任何匹配的方法,所以OP在代码或代码中有错误description@SirRu你说得对。我算错了括号。不过我在这个过程中找到了解决办法;)