挺简单的一个程序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里面的东西就会起冲突,请问怎么解决?
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里面的东西就会起冲突,请问怎么解决?
解决方案 »
- 关于Linq to sql自动生成的类中的两个问题
- 如何用正则表达式确定 字符串 是否包含有汉字。(是确认包含,不是全部)
- 如何把从数据库中读出来的数据再写入数据库??
- Sql语句的更新Update语法能不能不带字段名(set [Text]=)啊,把所有的字段(不含自动编号的字段)都更新 .
- 在winform在程序里如何内嵌播放器
- 连接Access数据库时,如何获得数据库的相对路径?
- datagrid打印问题
- 通过UDL文件连接数据库
- 关于事件的问题(事件消息堆积问题)
- 求个简单点的电子商务推荐系统源代码
- l右键点的是istview的那个item?
- 如何能把一个dataset中的不同datatable在一个gridview中显示出来
如果在vs中编译则没有这个问题
请达人解惑