protected void WriteLog(string message)
{
lock (lockObject)
{
var file = System.IO.File.AppendText("C:\\log.txt");
file.WriteLine(message);
file.Close();
}
} protected void asyctest(int threadid)
{ this.WriteLog(string.Format("主线程({0})的子线程({1})开始", threadid, AppDomain.GetCurrentThreadId())); System.Threading.Thread.Sleep(10000); ProcessThread thread = this.GetThreadbyID(threadid); this.WriteLog(string.Format("主线程({0}: state: {1})的子线程({2})结束", threadid, thread == null ? -1 : (int)thread.ThreadState, AppDomain.GetCurrentThreadId())); } protected ProcessThread GetThreadbyID(int id)
{
foreach (ProcessThread item in System.Diagnostics.Process.GetCurrentProcess().Threads)
{
if (item.Id == id)
{
return item;
}
} return null;
} protected delegate void delegatetest(int threadid); [WebMethod]
public void test()
{
this.WriteLog(string.Format("主线程({0})开始", AppDomain.GetCurrentThreadId())); for (int i = 0; i < 10; i++)
{
delegatetest currentDaliyCollect = new delegatetest(asyctest);
IAsyncResult iADaliyCollect = currentDaliyCollect.BeginInvoke(AppDomain.GetCurrentThreadId(), null, null);
if (iADaliyCollect.IsCompleted)
{
currentDaliyCollect.EndInvoke(iADaliyCollect);
} }
}

  

结论:

C# WebService中任务处理线程创建子线程后,此任务处理线程并没有退出销毁,而是ThreadState切换成Wait状态,所以子线程也不会被中止,而得以继续执行。

本来是想验证,父线程退出后,子线程是否会被强制中止。时间关系没有验证,至少验证了在webservice,不用担心在rpc方法中创建的子线程会被中止。

C# WebService中任务处理线程创建子线程后的更多相关文章

  1. Handler系列之创建子线程Handler

    上一篇我介绍了Handler机制的工作原理,默认情况下,ActivityThread类为我们创建的了主线程的Looper和消息队列,所以当你创建Handler之后发送消息的时候,消息的轮训和handl ...

  2. C#创建子线程,子线程使用委托更新控件

    一.背景 由于在窗体程序中通过点击一个button按键后需要更新TreeView控件的内容,由于等待时间比较长,主程序无法一起在那边等待,需要去处理其它的事情,所以就需要创建新的子线程来处理.因为主线 ...

  3. vc中主线程等待子线程退出的方法

    VC线程同步,在子线程中等待另一子线程结束,通过WaitForSingleObject可以实现,但是如果在主线程中等待子线程结束,这个函数是无法完成要求的,因为它会造成主线程挂起,导致程序死掉.我们可 ...

  4. 通过类创建子线程&同步锁

    一.通过类创建子线程 import threading class MyThread(threading.Thread): def __init__(self,num): threading.Thre ...

  5. Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)

    keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...

  6. IOS 线程处理 子线程

    IOS 线程处理 子线程的启动与结束 技术交流新QQ群:414971585   IOS中,如果要在主线程中启动一个子线程,可以又两种方法: [NSThread detachNewThreadSelec ...

  7. Java多线程01(Thread类、线程创建、线程池)

    Java多线程(Thread类.线程创建.线程池) 第一章 多线程 1.1 多线程介绍 1.1.1 基本概念 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于 ...

  8. c# Winfrom窗体事件中启用多线程 并用子线程修改窗体里面的属性

    昨天一个朋友问我一个问题,需求是 this.textBox1.Text = "睡眠前"; Thread.Sleep(1000); this.textBox1.Text = &quo ...

  9. 【转载】在C#中主线程和子线程如何实现互相传递数据

    引用:https://blog.csdn.net/shuaihj/article/details/41316731 一.不带参数创建Thread using System; using System. ...

随机推荐

  1. ehcache介绍

    EHCache是来自sourceforge(http://ehcache.sourceforge.net/) 的开源项目,也是纯Java实现的简单.快速的Cache组件.EHCache支持内存和磁盘的 ...

  2. hadoop Partiton中的字符串Hash函数改进

    最近的MapReduce端的Partition根据map生成的Key来进行哈希,导致哈希出来的Reduce端处理任务数量非常不均匀,有些Reduce端处理的数据量非常小(几分钟就执行完成,而最后的pa ...

  3. 第五章 用Helm部署Istio

    5.1 Istio Chart概述 Helm是目前Istio官方推荐的安装方式.还可以对输入值进行一些调整,完成对Istio的部分配置工作.Istio Chart是一个总分结构,其分级结构和设计结构是 ...

  4. 使用jQuery Pagination Plugin实现分页效果

    最近使用分页这个基础效果较为频繁,而项目前端页面使用的是纯静态的HTML,自己之前写的JSP中的分页就用不成了:项目中也引入了Bootstrap,本来想使用Bootstrap中的分页样式,但发现其样式 ...

  5. Servlet的复习

    Servlet概述 在JavaWeb阶段,使用Servlet是很经常的是事情,Servlet作为MVC中控制器(C)的存在,是不可缺少的一部分.当然Servlet作为JavaWeb的三大组件之一(其他 ...

  6. PHP处理session跨域

    同一根域名下子域名之间的跨域 ini_set('session.name', 'sid'); //设置session_id的键名 ini_set('session.use_trans_sid', 0) ...

  7. 敌兵布阵hdu1166

    /* 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. [POJ] The Triangle

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 47278   Accepted: 28608 De ...

  9. asp.net 编码 解码

    编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"http://hovertree.com/\">何问起& ...

  10. MVC项目不同域之间的UrlRouting

    一.DomainAction,方便生成不同域下的url 1.新建3个MVC项目,一个公用类库WebCore Demo.WebApplication0 绑定域名 www.demo.com demo.co ...