【问题标题】:Trying to use threads to save a file in the background尝试使用线程在后台保存文件
【发布时间】:2017-10-06 01:19:46
【问题描述】:

所以我尝试使用线程在后台保存文件,以防止主统一线程冻结,直到文件保存:

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

由于某种原因,线程代码似乎没有被执行,因为文件没有被保存。如果我注释掉线程创建并将线程主体留在其中,则文件会正确保存。

任何人都知道我在这里可能做错了什么(我假设我在做一些愚蠢的事情,因为我以前从未尝试过使用线程)。

【问题讨论】:

    标签: c# multithreading unity3d


    【解决方案1】:

    这可能是在黑暗中拍摄,但如果您使用命名线程而不是任务,您通常必须在之后说 ThreadName.Start(),例如在声明线程之后说:

    _saveMapThread.Start();
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多