挺简单的一个程序using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Net;namespace ConsoleColsed
{
    public delegate bool ConsoleCtrlDelegate(int dwCtrlType);    public class ClsMain
    {
        [DllImport("kernel32.dll")]
        private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add); [STAThread]
        static void Main()
        {
            ConsoleCtrlDelegate newDelegate = new ConsoleCtrlDelegate(HandlerRoutine);
            bool bRet = SetConsoleCtrlHandler(newDelegate, true); string server = Dns.GetHostName();//问题出在这一行,在控制台按Ctrl+C会蹦异常,注释掉这一行就没有问题 Console.Read();
        }        private static bool HandlerRoutine(int CtrlType)
        {
const int CTRL_CLOSE_EVENT = 2;
const int CTRL_C_EVENT = 0;
            switch (CtrlType)
            {
case CTRL_CLOSE_EVENT:
                Console.WriteLine("Close");
            break;
case CTRL_C_EVENT:
Console.WriteLine("Ctrl+C");
break;
            }            return false;
        }
    }
}大家请看string server = Dns.GetHostName();这一行,如果把这一行注释掉了就没有问题。
那么问题是,我现在要写一个基于控制台的socket程序,而且我希望接管控制台关于程序的动作(比如按了Ctrl+C我要做一些处理),可是好像用System.Net里面的东西就会起冲突,请问怎么解决?