问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#程序访问SQL2008报错:已成功与服务器建立联系,但登陆前握手期间发生错误

发布网友 发布时间:2023-05-24 09:30

我来回答

3个回答

热心网友 时间:2023-10-05 15:34

一:线程
在.net中提供了两种启动线程的方式,一种是不带参数的启动方式,另一种是带参数的启动的方式。
不带参数的启动方式
如果启动参数时无需其它额外的信息,可以使用ThreadStart来实例化Thread:
带参数的启动方法

带参数,就不能用ThreadStart委托作为构造函数的参数来实例化Thread了,而要 ParameterizedThreadStart委托,和ThreadStart一样的是它也是线程启动时要执行的方法,和ThreadStart不同 的是,它在实例化时可以用一个带有一个Object参数的方法作为构造函数的参数,而实例化ThreadStart时所用到的方法是没有参数的。 为 什么是Object这样的参数呢?很简单,因为在.net中Object是所有类型的基类,用它可以表示Array(数组)、Interface(接 口)、ValueType(值类型,如bool,byte,char,short,int,float,long,double等)、class(类) 等.net中的类型。当然,这也意味着如果你要启动一个线程,给它传递一个int类型参数时,必须在启动方法中进行相应的类型转换。
这种object类型的参数可以定义一个有多个属性的类来进行,或者用$隔开的字符串,使用的时候分解为数组来用
简单实例代码:
//不带参数
ThreadStart ts = new ThreadStart(ThreadFunc);
Thread t = new Thread(ts);
t.Start();

//带参数
ParameterizedThreadStart ParStart = new ParameterizedThreadStart(GoTo);
Thread myThread = new Thread(ParStart);
object o = (object)txt_url.Text;
myThread.Start(o);
详细实例代码:
Program p = new Program();
Thread nonParameterThread = new Thread(new ThreadStart(p.NonParameterRun));
nonParameterThread.Start();

Thread parameterThread = new Thread(new ParameterizedThreadStart(p.ParameterRun));
parameterThread.Name = "Thread A:";
parameterThread.Start(30);

/// <summary>
/// 不带参数的启动方法
/// </summary>
public void NonParameterRun()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("系统当前时间毫秒值:"+DateTime.Now.Millisecond.ToString());
Thread.Sleep(200);//让线程暂停
}
}

/// <summary>
/// 带参数的启动方法
/// </summary>
/// <param name="ms">让线程在运行过程中的休眠间隔</param>
public void ParameterRun(object ms)
{
int j = 10;
int.TryParse(ms.ToString(), out j);//这里采用了TryParse方法,避免不能转换时出现异常
for (int i = 0; i < 10; i++)
{
Console.WriteLine(Thread.CurrentThread.Name+"系统当前时间毫秒值:" + DateTime.Now.Millisecond.ToString());
Thread.Sleep(j);//让线程暂停
}
}
二:委托
委托就是讲方法以参数的形式进行传递
private static void WriteStrToFile(string txt)
{
write(txt);
}
private delegate void WriteStrToFileDelegate(string txt);//定义委托
new WriteStrToFileDelegate(WriteStrToFile).BeginInvoke(txt, null, null);//异步使用委托
再举一例:
public delegate void GreetingDelegate(string name);//定义委托

//定义两方法
private static void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
}

private static void ChineseGreeting(string name) {
Console.WriteLine("早上好, " + name);
}

使用:
private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);//这里默认同步方式,与MakeGreeting.Invoke(name)效果一样
}

//使用
GreetPeople("Jimmy Zhang", EnglishGreeting);
GreetPeople("张子阳", ChineseGreeting);
实际上,我们可以也可以绕过GreetPeople方法,通过委托来直接调用EnglishGreeting和ChineseGreeting:
GreetingDelegate delegate1;
  delegate1 = EnglishGreeting; // 先给委托类型的变量赋值
  delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
  // 将先后调用 EnglishGreeting 与 ChineseGreeting 方法
  delegate1 ("Jimmy Zhang");
  Console.ReadKey();

委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。同步调用会阻塞线程,如果是要调用一项繁重的工作(如大量IO操作),可能会让程序停顿很长时间,造成糟糕的用户体验,这时候异步调用就很有必要了。
异步调用不阻塞线程,而是把调用塞到线程池中,程序主线程或UI线程可以继续执行。
委托的异步调用通过BeginInvoke和EndInvoke来实现。

比较:
在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来启动时要运行的方法。

委托其实也是一个线程

MethodInvoker mi = new MethodInvoker(DoPay);//定义委托
this.BeginInvoke(mi);

这里MethodInvoker
只是一个委托, 我们可以认为所有没有参数的返回值为void的委托和 MethodInvoker 是一样的, 他们都可以委托到没有参数的返回值为void的方法。
你自己写一个 Public Delegate Sub ABC, 这个时候ABC和MethodInvoker是完全一样的。所以.Net 提供这个只是为了方便你编写,省得你自己再写一堆一样的委托了。

热心网友 时间:2023-10-05 15:34

会不会是连接数超过了,或者把过期时间缩短些如何。

热心网友 时间:2023-10-05 15:35

贴个报错图出来
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
焦作有哪些旅行景点值得一去? 河南穿古装去的地方 AE入门从学会套模板开始,AE模板套用简易教程,看起来复杂的AE其实也很... ae怎么套用模板ae模版的使用方法 北京通州区有什么好玩的地方吗 请问现在有哪些看电影的网站?越多越好~~ 帮初中女儿请假一天讲身体不适,班主任却跟别的老师讲她得了大病,该如何... 梦见家中被盗空只剩一件绿色衣的预兆 梦见美丽沙穗 美版4s内置卡贴有什么危害? 加快新动能培育是推动新旧动能转换的唯一途径正确嘛 积极培育新之助加快发展壮大新动能要构建有利于什么的热带雨林和生态环境? 敬意的读音敬意的读音是什么 氢氧化钾是氨基酸吗 如何评价 hololens 控件或物体的尾随功能 hololens2录屏功能 wps是office吗?两者可以兼容吗? WPS是办公OFFICE吗? 巩俐自曝不习惯被叫“艺人”,艺人是否有贬低的意思? 蓝牙耳机现在5.几了 拼音正词法问题! 演讲稿《我为学校添块瓦》 四百五十个字左右 急!急!急!&#xF40F; 排版可以用的软件(排版一般用什么软件) 华为手环8离开手机为什么能微信支付 水晶泥弄被子上怎样可以清除干净 报纸的拼音狐报纸的拼音是什么 铜版纸的词性铜版纸的词性是什么 英语作文,谁来帮忙改下??????(回答好的我会追加分数,现在没有分数以免浪费) 关于QQ会员,说说你会开通QQ会员的理由 手风琴和尤克里里怎么选 为什么说人一生快乐的源泉都来自童年,如果童年不快乐,那人生就完蛋大半了? 在括号里填入合适的字母。 ①人生的快乐大半建筑在人与人的关系上。 芦笋炒肉片 我不小心把我微信朋友删除了,现在加回她可是以前的聊天记录完全没有了。有办法恢复聊天记录吗?? 康佳55英寸LED液晶电视,屏幕双屏怎么切换单屏? 红茶的国语词典红茶的国语词典是什么 便秘可以喝枸杞红枣茶吗 大便干燥能喝北芪红枣党参枸杞水吗 生蚝肉煮微波炉多久能熟 笔记本电脑桌面没有工具栏还自动一闪一闪 电热水龙头和小厨宝哪个好电热水龙头什么牌子好 电热水龙头和小厨宝哪个好小厨宝什么牌子好 供电的词语供电的词语是什么 博物馆科技馆派出所都是表示场所的词语对吗 .下列词语中和其他三项不是同一类的是( )。a.派出所 b.诊所 c.住所 d.供电所 雁鹅的词语雁鹅的词语是什么 山西焦化股票怎么样? 自然物,树的果食有哪些 树上的果实怎么形容 lv内购几折