我目前有一个代码,可以从数据库中检索数据并在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] 删除。
我来说两句