猿问

我们如何使用统一性在后台保存大量数据?

我想在后台将大量数据保存在本地数据库中,但是当我尝试保存数据时,我的统一IDE将挂起2-3分钟。2-3分钟后,它可以正常工作。任何人都可以建议我该怎么做..以下是我的示例代码


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);   

}


LEATH
浏览 154回答 1
1回答

慕尼黑的夜晚无繁华

协程不是线程。如果保存操作需要花费大量时间才能完成,请创建一个新线程并在其中执行。有关示例,请参见下面的功能。该代码已被移到新的线程中。void WaitAndPrint(TestController.TestReportModel report){&nbsp; &nbsp; //Create Thread&nbsp; &nbsp; Thread thread = new Thread(delegate ()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; dbHelper.deleteAllFromTable(dbHelper.TABLE_OFFLINE_MASTER_TEST_REPORT);&nbsp; &nbsp; &nbsp; &nbsp; dbHelper.deleteAllFromTable(dbHelper.TABLE_MASTER_OFFLINE_POINT_DATA);&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < report.data.Count; i++)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TestController.TestData MasterData = report.data[i];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dbHelper.AddOfflineMasterTestReport(MasterData, "");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });&nbsp; &nbsp; //Start the Thread and execute the code inside it&nbsp; &nbsp; thread.Start();}现在,您可以直接调用函数,它不应冻结Unity: WaitAndPrint(report);如果您想从新的Threa中使用Unity的API,请使用UnityThread.executeInUpdate。见这对完整的例子。
随时随地看视频慕课网APP
我要回答