[System.Runtime.InteropServices.DllImport("encry.dll")]
static extern void Encrypt_Key(byte[] text,char[] key); //加密函数
System.IO.FileStream file = File.Open(inFile,FileMode.Open,FileAccess.Read,FileShare.None); 
System.IO.StreamReader reader = new StreamReader(file,System.Text.Encoding.Default);FileStream writeLogFileStream = File.Open(outFile,FileMode.Create,FileAccess.ReadWrite,FileShare.None);
System.IO.StreamWriter writer = new StreamWriter(writeLogFileStream,System.Text.Encoding.Default);
while((lineString = reader.ReadLine()) != null)
{
     string[] lineStrs = lineString.Split('|');
     byte[] cardNoByte = System.Text.Encoding.Default.GetBytes(lineStrs[24] );
     MainForm.Encrypt_Key(cardNoByte,"12345678".ToCharArray());//加密数据
     writer.WriteLine(System.Text.Encoding.Default.GetString(cardNoByte));
}encry.dll是一个加密功能的动态连接库,程序是读取一个TXT文件,2万行以上,对某个字段进行加密后写入另一个文件
程序总是处理到1万多行时自动退出(这个行数每次都不一样),也不报错。在其他机器上运行,有的机器能运行完,有的运行到中间(这个行数不固定)是自动退出了,请高手协助解决

解决方案 »

  1.   

    不行,甚至把这个
    writer.WriteLine(System.Text.Encoding.Default.GetString(cardNoByte)); 
    去掉也不行
      

  2.   

    把string[] lineStrs 和 byte[] cardNoByte 放到循环体外面定义行不?试试。
      

  3.   

    怀疑是大量循环调用dll的问题,去掉MainForm.Encrypt_Key(cardNoByte,"12345678".ToCharArray());//加密数据
    就没有问题了,怎么解决?
      

  4.   

    程序突然自己退出了,而且没有任何错误提示,一般都是调用Dll的问题,你查一下你的DLL程序吧,应该跟你的主程序无关,而是DLL程序本身有问题导致的