C# 尝试使用线程在后台保存文件
因此,我尝试使用线程在后台保存文件,以防止unity主线程在文件保存之前冻结:C# 尝试使用线程在后台保存文件,c#,multithreading,unity3d,C#,Multithreading,Unity3d,因此,我尝试使用线程在后台保存文件,以防止unity主线程在文件保存之前冻结: public void SaveMap() { MapRendererBehaviour mapRendererBehaviour = GameObject.FindWithTag("MapRenderer").GetComponent<MapRendererBehaviour>(); SerializedMap serializedMap = mapRendererBehaviour.ToSer
public void SaveMap() {
MapRendererBehaviour mapRendererBehaviour = GameObject.FindWithTag("MapRenderer").GetComponent<MapRendererBehaviour>();
SerializedMap serializedMap = mapRendererBehaviour.ToSerializedData();
Debug.Log("test");
_saveMapThread = new Thread(() => {
string saveMapJson = JsonConvert.SerializeObject(serializedMap);
File.WriteAllText(_saveMapFilePath, saveMapJson);
});
}
public void SaveMap(){
MapRenderBehavior MapRenderBehavior=GameObject.FindWithTag(“MapRenderer”).GetComponent();
SerializedMap SerializedMap=MapRenderBehavior.ToSerializedData();
调试日志(“测试”);
_saveMapThread=新线程(()=>{
字符串saveMapJson=JsonConvert.SerializeObject(serializedMap);
WriteAllText(_saveMapFilePath,saveMapJson);
});
}
由于某些原因,线程代码似乎没有执行,因为文件没有保存。如果我注释掉了线程创建,并将线程主体保留在那里,那么文件将正确保存
任何人都知道我在这里可能做错了什么(我假设我在做一些愚蠢的事情,因为我以前从来没有尝试过使用线程)。这可能是一个冒险,但是如果你使用命名线程而不是任务,你通常必须在后面说ThreadName.Start(),例如在声明线程之后说:
_saveMapThread.Start();
你能团结一致地使用任务吗<代码>任务.运行(…)可能会更安全一点?很好的一点axlj,但是我不认为你可以通过这篇文章的外观来升级!:-)真的!似乎最新版本有一些很好的新功能。调用
.Start()
(我查找的两个线程示例中都没有)确实解决了我的问题。