为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
LEATH 2021-05-01 07:10:00
我想在后台将大量数据保存在本地数据库中,但是当我尝试保存数据时,我的统一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);   }
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

协程不是线程。如果保存操作需要花费大量时间才能完成,请创建一个新线程并在其中执行。有关示例,请参见下面的功能。该代码已被移到新的线程中。


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。见这对完整的例子。


查看完整回答
反对 回复 2021-05-08
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信