DotNetFellow Ответов: 1

Как преобразовать sqldatarerader в aysnc/waits?


привет
Я пытался заставить SqlDataReader работать с помощью Async/Waits, но без особого успеха. Я получил IEnumerable, не могу преобразовать задачу в SqlDataReader и некоторые другие ошибки.

Вот в основном мой код, и я должен заранее поблагодарить всех, кто действительно может протянуть руку помощи.

//App_Code class 

public class Customerslib
{
    public static SqlDataReader Customer_Select(Int32 Year, string Country, string Category)
    {

        SqlDataReader reader = null;
        var connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection connection = new SqlConnection(connectionString);
        SqlCommand sqlcmd = new SqlCommand(Customer_Select,connection);
        sqlcmd.CommandType = CommandType.StoredProcedure;
        sqlcmd.Parameters.Add(new SqlParameter("@Year", SqlDbType.Int)).Value = Year;
        sqlcmd.Parameters.Add(new SqlParameter("@Country", SqlDbType.VarChar,50)).Value = Country;
        sqlcmd.Parameters.Add(new SqlParameter("@Category", SqlDbType.NVarChar, 100)).Value = Category;
        sqlcmd.Connection = connection;
        connection.Open();
        reader = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);
        return reader;

    }

}


//ASPX page
 protected void Page_Load(object sender, EventArgs e)
    {   

        if (!IsPostBack)
        {
            using (SqlDataReader custreader = Customerslib.Customer_Select(Convert.ToInt16("2017"), "Thailand", "Manager")
            {
                rptCustomer.DataSource = custreader 
                rptCustomer.DataBind();
            }
        }
    }


Что я уже пробовал:

Я пробовал эти несколько ссылок без особого успеха из-за того, как я возвращаю свой SQLDatareader.

c# - асинхронно возвращает данные из datareader - переполнение стека[^]

Async/Await Может Быть Лучше[^]

c# - использование async / await с DataReader ? (без средних буферов!) - переполнение стека[^]

1 Ответов

Рейтинг:
0

Graeme_Grant

Эти ссылки являются одной стороной решения, а другая-это то, как обрабатывать асинхронные вызовы в ASP.NET веб-формы.

Я использовал этот поиск: asp.net асинхронные веб-формы - поиск Google[^] и нашел эти две очень полезные ссылки для вас:

* Использование асинхронных методов в ASP.NET 4.5 | Microsoft Docs[^]
* Магия использования асинхронных методов в ASP.NET 4.5 плюс важный Гоча-Скотт Хансельман[^]


George Swan

Эта ссылка также полезна
http://www.tugberkugurlu.com/archive/asynchronous-database-calls-with-task-based-asynchronous-programming-model-tap-in-asp-net-mvc-4

Graeme_Grant

Это не MVC и веб-форм, используемых в ОП. MVC-это совсем другое.

George Swan

Хорошая мысль, Грэм. Но разве шаблон использования асинхронных методов не похож? Должен признаться, что я никогда не пользовался веб-формами.

Graeme_Grant

Да, но реализация WinForm отличается от MVC. Сравните ссылку, которую вы предоставили, с теми, что есть у меня, и вы увидите, как это сделать.