我只在Windows Vista(SP1)上获得了应用程序的奇怪行为。 在随机情况下调用dll的静态extern方法会使应用程序停止工作,突然显示任务管理器中的CPU使用率变为00,而内存(私有工作集)保持静态。
在Windows XP和Windows 7应用程序上行为正常。
我将在这里展示一些示例代码。
DllWrapper.cs
public class DLLWrapper
{
private const string dllTest = @"DLLTEST.dll";
[DllImport(dllTest)]
internal static extern bool DoSomething(string sPath1, string sPath2);
}
CallingClass.cs
//CallingClass Method
private void MoveFile(string sInputPath, string sOutputPath)
{
try
{
//get all xml at input
string[] arrFiles = Directory.GetFiles(sInputPath, "*.xml");
//loop: through all xmls in directory
foreach (string sFile in arrFiles)
{
//cond: check dosmething successful
//calls extrenal dll method
if (DLLWrapper.DoSomething(sFile, sOutputPath))
{
//add something to log
}
//cond: dosomething false
else
{
//add log failure
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
现在日志文件有时会记录成功,但应用程序进度会在随机xml文件上停止(可能在第5个xml文件上,也可能在目录中的第120个文件中)。
请告诉我如何识别这种情况下的问题。