有一个访问目录的应用程序,并通过 SoundPlayer 类访问文件。哇。我有以下 C#:
public void PlaySound()
{
try
{
while (true)
{
List<string> distinctMusicFile = GetMusicFile.Distinct().ToList();
if (DataTableWorkCall.GetDataTableNew.Rows.Count > 0)
{
for (int i = 0; i < distinctMusicFile.Count; i++)
{
StopSound();
player.SoundLocation = distinctMusicFile[i];
player.Play();
Thread.Sleep(Convert.ToInt32(ConfigurationSettings.AppSettings["MusicDuration"]) * 1000);
StopSound();
}
}
else
GetMusicFile.Clear();
}
}
catch (ThreadAbortException e)
{
if (generateLog)
log.LogTxt("Finished...\n");
}
catch (UnauthorizedAccessException e)
{
if (generateLog)
log.LogTxt(e.ToString());
}
}
此代码正在生成此异常:
Application: AndonGestamp_FormMonitoramento.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.UnauthorizedAccessException
Stack:
at System.IO.__Error.WinIOError(Int32, System.String)
at System.IO.FileStream.Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean)
at System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, System.IO.FileOptions)
at System.IO.File.Create(System.String)
at AndonGestamp_FormMonitoramento.Utils.Log.LogTxt(System.String)
at AndonGestamp_FormMonitoramento.Utils.Music.PlaySound()
at AndonGestamp_FormMonitoramento.Andon.ThreadPlayMusic()
at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ThreadHelper.ThreadStart()
日志生成:
public void LogTxt(string msg)
{
string logDirectory = ConfigurationSettings.AppSettings["Log"].ToString();
if (!System.IO.File.Exists(logDirectory))
{
System.IO.File.Create(logDirectory).Close();
}
if (msg != null)
{
System.IO.TextWriter file = System.IO.File.AppendText(logDirectory);
file.WriteLine(msg + " " + DateTime.Now + "\n");
file.Close();
}
}
函数 log.LogTxt(String) 创建一个txt文件,可以这样吗?关于权限的问题?谁能帮我?谢谢!