我想在后台保存本地数据库中的大量数据,但是当我尝试保存数据时,我的Unity IDE会挂起2-3分钟。 2-3分钟后它完美运作。任何人都可以建议我怎么做.Below是我的示例代码
private IEnumerator WaitAndPrint(TestController.TestReportModel report)
{
dbHelper.deleteAllFromTable(dbHelper.TABLE_OFFLINE_MASTER_TEST_REPORT);
dbHelper.deleteAllFromTable(dbHelper.TABLE_MASTER_OFFLINE_POINT_DATA);
for (int i = 0; i < report.data.Count; i++)
{
TestController.TestData MasterData = report.data[i];
dbHelper.AddOfflineMasterTestReport(MasterData, "");
}
yield return new WaitForSeconds(1);
}
答案 0 :(得分:1)
Coroutine不是一个主题。如果保存操作需要花费很长时间才能完成,请创建一个新线程并在那里执行。有关示例,请参阅下面的功能。该代码已移至新的Thread中。
void WaitAndPrint(TestController.TestReportModel report)
{
//Create Thread
Thread thread = new Thread(delegate ()
{
dbHelper.deleteAllFromTable(dbHelper.TABLE_OFFLINE_MASTER_TEST_REPORT);
dbHelper.deleteAllFromTable(dbHelper.TABLE_MASTER_OFFLINE_POINT_DATA);
for (int i = 0; i < report.data.Count; i++)
{
TestController.TestData MasterData = report.data[i];
dbHelper.AddOfflineMasterTestReport(MasterData, "");
}
});
//Start the Thread and execute the code inside it
thread.Start();
}
您现在可以直接调用您的函数,它不应该冻结Unity:WaitAndPrint(report);
如果您想使用新Threa中的Unity API,请使用UnityThread.executeInUpdate
。有关完整示例,请参阅this。