동시에 여러 쿼리를 실행할 수 있도록 코드를 만들려고 노력하고 있습니다.하지만 devart havent가 aswait/async를 구현하기 때문에 몇 가지 문제가 있습니다. 그것이 작동되도록 제대로Devart Oracle 드라이버를 랩핑하여 비동기로 만들 수 있습니까?
내 첫번째 생각은 나쁜 생각 같은 소리 정말 그래서에서 찾고있는 무엇을
을 달성 해달라고
public Task SleepAsync(int millisecondsTimeout)
{
return Task.Run(() => Sleep(millisecondsTimeout));
}
그러나 https://blogs.msdn.microsoft.com/pfxteam/2012/03/24/should-i-expose-asynchronous-wrappers-for-synchronous-methods/에서 내 저장소에 전화를 포장했다 비동기 기능 Devart는 https://www.devart.com/dotconnect/oracle/articles/asynchronous.html
문제는 내가 말끔이 BeginExecuteReader 및 EndExecuteReader를 사용하는 방법을 알아낼 질수 있다는 것입니다 드라이버에있다, 나는 그래서 내가 어디 보통 OracleDataReader로 끝날
await Task.Factory.FromAsync(sqlConnection.BeginOpen, sqlConnection.EndOpen, null);
var oracleCommand = new OracleCommand(sql, sqlConnection);
OracleDataReader result = await Task.Factory.FromAsync(oracleCommand.BeginExecuteReader, oracleCommand.EndExecuteReader, null);
같은 끝낼 내가 사용하는 IEnumerable을 끝낼 것 :
이IEnumerable<TModel> elements = await sqlConnection.QueryAsync<TModel>(sql, parameters);
내가 먼저 시도 무엇입니까 그냥 사용하여 쓰기 단정 한
작업 GetElement (문자열 SQL, 개체 매개 변수 = NULL){
using (var sqlConnection = new OracleConnection(Connectionstring))
{
await sqlConnection.OpenAsync();
var element = await sqlConnection.QuerySingleAsync<TModel>(sql, parameters);
return element;
}
}
하지만 그건
비동기 실행되지 않습니다 비동기 보호
그것은 말끔를 계속 사용하고 정말 비동기 할 수 있습니까?
Dapper를 사용하지 않지만이 [github 페이지] (https://github.com/StackExchange/)가 발견되었습니다. Dapper/blob/master/Dapper/SqlMapper.Async.cs) .NET 4.5에서 비동기 호출을 설명합니다. 그게 도움이 되니? – tbone
**하지만 비동기 **를 실행하지 않습니다. 호출하는 스레드가 호출자에게 다시 양도되는 경우에도 두 개의 'await'문이 차례대로 실행되는 것을 볼 때 코드가 비동기로 실행되지 않는 것을 어떻게 알 수 있습니까? ,'await'로 인해 –