在另一个线程(Unity3D)中从数据库检索数据

黄素

我目前有一个代码,可以从数据库中检索数据并在unity3D中可视化它。但是,每次它在FixedUpdate()函数中检索数据时,它每1秒就会急剧增加一次。我正在考虑使用线程来执行此操作,但是我不确定自己在做什么错。

这是我在线程中调用的函数。

 public void retrievefromDB(){
                            if (timeStep - prevTimeStep > 99) {
                                    timeStep -= 1; //special for this dataset
   query = "SELECT * FROM GridData2 WHERE timestep=" + timeStep;

                                    if (showParent)
                                            query += " AND (Level != 10)";
                                    else
                                            query += " AND (Level == 10)";

      query += " AND temperature >= " + minTemp + " AND temperature <= " + maxTemp;
                                    dt.Rows.Clear ();
                                    dt = sqlDB.ExecuteQuery (query);

                                    prevTimeStep = timeStep;
                            }

            }

这段代码每1秒钟延迟一次场景,因此我尝试将其放入线程。

void FixedUpdate()
    {
    Thread testthread = new Thread(new ThreadStart(retrievefromDB));
        testthread.Start ();
}

将其放入线程中后,一段时间后仍会崩溃。谁能告诉我我做错了什么?我该如何解决呢?

黄素

现在终于可以使用了。只需将它们添加到retrievefromDB()

public void retrievefromDB(){
      while(true){
                            if (timeStep - prevTimeStep > 99) {
                                    timeStep -= 1; //special for this dataset
   query = "SELECT * FROM GridData2 WHERE timestep=" + timeStep;

                                    if (showParent)
                                            query += " AND (Level != 10)";
                                    else
                                            query += " AND (Level == 10)";

      query += " AND temperature >= " + minTemp + " AND temperature <= " + maxTemp;
                                    dt.Rows.Clear ();
                                    dt = sqlDB.ExecuteQuery (query);

                                    prevTimeStep = timeStep;
                            }
           Thread.Sleep(1);
               }
            }

并将其放入Start()函数

testThread = UnityThreadHelper.CreateThread (() =>
                                                     {
            UnityThreadHelper.TaskDistributor.Dispatch (() => retrievefromDB ());

        });

        testThread.Start ();

我正在使用来自http://forum.unity3d.com/threads/unity-threading-helper.90128/的threadhelper,因此您可以检查一下。感谢所有提供帮助的人!:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在一个线程中创建数据库实体,然后尝试在另一个线程中检索同一实体会产生不同的结果

如何从阻止读取Gtk3中的另一个线程中检索数据?

从从 C# MSSQL 中的另一个表中检索的 datagridview 数据插入到数据库

从数据库onitemclick列表视图检索数据到TextView中的另一个Activity

在 C++ 中的多个线程中将表从一个数据库复制到另一个数据库

如何在另一个线程中将数据插入数据库

无法从另一个线程删除Realm数据库对象(即使在搜索之后)

如何将数据从一个表插入和检索到mysql数据库中的另一个表

在后台线程中将核心数据从一个数据库复制到另一个数据库

优化查询 - 1 个数据库中的用户订阅,另一个数据库中的 3 级数据。查找用户订阅的顶级

如何从数据库中的数据复制到另一个数据库?

使用 ID 从另一个活动中的 SQLite 数据库读取数据

Laravel:从另一个数据库表中获取数据

从Joomla 3.2+中的另一个数据库访问数据

使用swift 3如何从firebase检索另一个数据中的数据

在Unity3D中播放另一个音频时停止音频

从tmp数据库中的表插入并更新到另一个数据库中的表

Django 从另一个表单中检索数据

从另一个 php 文件中检索数据

通过同一数据库中另一个表的 id 过滤一个 SQLite 数据库表中的数据

根据存储在另一个数据库中的值为数据库分配新值

将部分数据库表合并到另一个数据库表中?

从当前数据库中的另一个数据库运行存储过程

如何基于另一个数据库中满足的参数创建SQL数据库

Python多线程使用另一个线程中的一个线程的数据

数据库中另一个函数在函数中调用变量

Django无法从另一个表中的数据库中获取值

创建新的数据库从另一个数据库

从另一个Azure SQL数据库还原Azure SQL数据库