有什么办法解决这个异常吗? 最近做个项目发送短信中遇到这个异常。
现在暂时没法发图
代码如下:
private void send()
{
try
{
//SendSMSBase(this.user, this.pwd, this.mobile, this.msg);
WebClient webc = new WebClient();
string datastr = "userid=" + this.user_id + "&username=" + this.user_name + "&passwordMd5=" + this.pwd + "&mobile=" + this.mobile + "&message=" + System.Web.HttpUtility.UrlEncode(this.msg, System.Text.Encoding.GetEncoding("gbk"));
//webc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//byte[] res_by = webc.UploadData("http://139.129.107.160:8081/sendsms.php", "POST", System.Text.Encoding.UTF8.GetBytes(datastr));
//string res_str = System.Text.Encoding.UTF8.GetString(res_by);
//if (res_str.Contains("-"))
//{
// logger.Error("发送手机短消息接口返回错误!" + res_str);
//}
}
catch (Exception ex)
{
logger.Error("发送手机短消息失败!" + ex.Message);
}
finally
{
try
{
if (t1.IsAlive)
{
t1.Abort();
}
}
catch (ThreadAbortException ex)
{
}
catch (Exception eeee)
{
logger.Error("异常:" + eeee.Message);
//throw eeee;
}
}
}
public void SendMesPhone(string mobileGet, string msgGet)
{
// this.user = 100015002;
this.user_id = "100531";
this.user_name = "enetedu02";
//this.pwd = "!^v30&t1";
this.pwd = "55aa4312da4ed697";
this.mobile = mobileGet;
this.msg = msgGet;
//ThreadPool.QueueUserWorkItem(new WaitCallback(send), null);
t1 = new Thread(new ThreadStart(send));
t1.Start();
}
在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。 调用此方法通常会终止线程。
本意就是用抛出异常来终止线程, 可以try-catch下
Thread.Abort方法应谨慎使用。 尤其是当您调用它来中止当前线程以外的线程,您不知道哪些代码已执行或失败时要执行ThreadAbortException引发,也不能为特定的应用程序的状态或任何应用程序和用户的状态负责保留。 例如,调用Thread.Abort可能会阻止执行静态构造函数或阻止非托管资源的释放。
请注意,Thread.Abort在.NET Core 上不支持方法。
msdn上面的示例就不会引发异常了吗?
建议使用 HostingEnvironment.QueueBackgroundWorkItem
这个还真没用过呢
不要用abort终止线程,可以设置个变量来判断是否跳出线程
执行到 finally后这个线程自己就结束了,不需要你在去判断手动abort
线程里的代码执行结束后这个线程也就结束了,除非有while等循环的语句卡在那作为等待操作或者阻塞类型的方法会一直等待
建议提供相关代码
– dudu 5年前@dudu: 博客没有开通 暂时没法上传图片
– 实力快递员 5年前@实力快递员: 博问支持 markdown 高亮语法
– dudu 5年前@dudu: 我重新贴出代码了 可以看下嘛
– 实力快递员 5年前@实力快递员: 博问支持 github 的 markdown 语法
– dudu 5年前@实力快递员: 您用的是 .NET Framework 还是 .NET Core ?
– dudu 5年前@dudu: .NET Framework
– 实力快递员 5年前