我的Demo是C#的Windows窗体应用程序。
问题一:程序运行时,点击右上角的X关闭界面,为什么程序没完全退出?任务管理器中仍然在运行!请问怎么解决?
问题二:以前VC下我对一个Buf的运用现在在C#下不太清楚怎么用了!比如说
VC下:char DataBuf[100];
      我可以任意进行这样的操作:memcpy((ULONG *)(DataBuf+4),XXX,lenth);随便举得例子哈,就是数组之间数据的复制,里面顺便带了个对Buf的类型转换和地址的偏移!
而C#下:byte[]DataBuf=new byte[100];
我的问题是在C#下怎么实现上面VC中的用法,也就是实现上面那个语句?
我知道对于高手来说问题比较白痴哈,请不吝指教!c#bytewindows

解决方案 »

  1.   

    问题1,调试状态下叉掉主窗体,然后点debug里的暂停,一般能得到阻止进程关闭的当前方法
    问题2,参见System.Buffer类
      

  2.   

    谢谢回复! 请问能不能说下第二个问题,应该很简单那的,我只是想像C++里面那样索引数组的元素((ULONG *)(DataBuf+4),问题是在C#中这样是非法的,该怎么写才对呢?
      

  3.   

    召唤斑竹啊!没人么?我用了Buffer.BlockCopy()也能实现数组元素索引问题,但是由于我的原始数据是调用C++下的DLL库中函数读取的,所以用这种方法就多了一次MEMCPY,浪费了资源!我函数调用大概是
    ReadData((ULONG *)(DataBuf+index),lenth);//功能就是读取一定长度的数据到BUf
    index+=lenth;//这里我想一直缓存数据
    请问C#下怎么实现上面的语法?
      

  4.   

    问题一  :  没有退出  。。是因为你没有关闭主窗体  如果你想要单击X退出的话,请给窗体添加一个窗体退出后的事件  写上 :Application.Exit();     或者使用 窗体的this.DialogResult 在Main方法进行判断
      

  5.   

    1.没完全关闭程序吧?调用Application.Exit();试试
    2.int n=4/2+1;然后循环n-lenth,将其拷贝到新的数组中
      

  6.   

    问题一:没退出的原因很多,但主要原因一般是还有代码没有执行完毕,需要检查代码逻辑。问题二:使用 Array.Copy ,可以将一个数组某部分复制到另一个数组指定位置,具体用法查看下开发文档就知道了。
      

  7.   

    问题一:不知道你是不是用了多线程。如果是。那就是有线程没结束。
    问题二:你用C#的指针就行了。IntPtr代替C++里的指针的。
      

  8.   

    问题一:应该是多线程中有线程没有结束;
    问题二:C#里边用Array.Copy();重载了好几个Copy方法,可以看看哪个是你需要的。