public void DoWork() { while (IOUtils.ActiveThread) { if (IOUtils.SaveInThreadFlag) { IOUtils.SaveInThreadFlag = false; lock ( locker ) { IOUtils.SaveInThreadShaderBody = IOUtils.ShaderCopywriteMessage + IOUtils.SaveInThreadShaderBody; // Add checksum string checksum = IOUtils.CreateChecksum(IOUtils.SaveInThreadShaderBody); IOUtils.SaveInThreadShaderBody += IOUtils.CHECKSUM + IOUtils.VALUE_SEPARATOR + checksum; // Write to disk StreamWriter fileWriter = new StreamWriter(IOUtils.SaveInThreadPathName); try { fileWriter.Write(IOUtils.SaveInThreadShaderBody); Debug.Log("Saving complete"); } catch (Exception e) { Debug.LogException(e); } finally { fileWriter.Close(); } } } } Debug.Log("Thread closed"); }