[英]Async In Targeting .NET 4.0 Method
我在Webform .net 4.0項目中使用以下語法。 但是,一旦點擊dropdown1.DataSource = tasks[0].Result.Tables[0];
我收到NullReferenceException
錯誤。
我知道通常會由於未進行適當的分配而引發此錯誤,但是在我的語法中,它看起來像我進行了所有需要的適用分配。 為了使下拉列表正確填充,我需要在下面的語法中進行哪些更改/更改/修改?
namespace NETAsyncLowVersion
{
public partial class WebformLVAsync : System.Web.UI.UserControl
{
private class1 _class1 = new NC1();
private DataSet DS = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Task.Factory.ContinueWhenAll(new[]{ SqlQuery1() }, tasks =>
{
try
{
dropdown1.DataSource = tasks[0].Result.Tables[0];
}
catch (Exception exception) { throw exception; }
}, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
}
}
private void SqlQuery1()
{
dropdown1.DataSource = _class1.SqlQuery1(databaseconn);
}
public class class1
{
private DataSet DS = new DataSet();
private Databaselayer _Databaselayer = new Databaselayer();
public DataSet SqlQuery1(string databaseConnection)
{
DS = new DataSet();
_Databaselayer.SqlQueryBuilder = new StringBuilder();
_Databaselayer.SqlQueryBuilder.Append("Select managername from salesdatabase");
return _Databaselayer.FDS(databaseConnection, _Databaselayer.SqlQueryBuilder.ToString());
}
}
public class Databaselayer
{
public System.Threading.Tasks.Task<DataSet> FDS(string connectionString, string sqlQuery)
{
return System.Threading.Tasks.Task.Factory.StartNew(() =>
{
var dataSet = new DataSet();
using (var adapter = new SqlDataAdapter(sqlQuery, connectionString))
adapter.Fill(dataSet);
return dataSet;
});
}
}
}
我在另一個問題中談到了這一點: 使用1 DataReader進行多個數據庫調用 。 在您的情況下,您處於用戶控件中,那么您需要調用Page.RegisterAsyncTask方法,而不是簡單的RegisterAsyncTask
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.