상당히 큰 DataSet을 여러 청크로 묶는 방법에 대한 많은 대답이 있습니다.DataTable을 여러 Datatables로 비동기 적으로 분할
그러나 이러한 데이터 집합을 청크하는 동안 UI를 잠그지 않으면 실제로이를 수행하는 방법에 대한 해결책은 없습니다.
이 솔루션은 작동하지만, 나는 async
작동 await
로되어있어,하지만 난이 코드에서 기다리고 해야할지하지 않기 때문에 작업이 동 기적으로 실행 :
internal static class ExtensionMethods
{
internal static async Task<List<DataTable>> CloneTable(DataTable tableToClone, int countLimit)
{
List<DataTable> tables = new List<DataTable>();
int count = 0;
DataTable copyTable = null;
foreach (DataRow dr in tableToClone.Rows)
{
if ((count++ % countLimit) == 0)
{
copyTable = new DataTable();
copyTable = tableToClone.Clone();
copyTable.TableName = "TableCount" + count;
tables.Add(copyTable);
}
copyTable.ImportRow(dr);
}
return tables;
}
}
나는이 얻을 수있는 방법 동기식이 아닌 비동기식으로 실행하려면?
효율성을 위해 비동기를 찾고있는 경우 테이블 처리에 Parallel.ForEach를 사용하는 것이 좋습니다. https://msdn.microsoft.com/en-us/library/dd460720(v=vs.110) .aspx –
async/await에 대해 읽으시겠습니까? 게시하는 메소드는 코드를 기다릴 필요가 없기 때문에 동 기적으로 만 실행됩니다. – DavidG
@DavidG : 다른 전화를 많이 사용하면 async/await를 사용합니다. IO 작업이 없기 때문에이 특별한 경우에 문제가 발생했습니다. – GrammatonCleric