您的位置:首页 > 编程语言 > C#

C# 线程 计划任务

2014-06-25 18:13 162 查看
using System.Threading;

public void ThreadMethod()
{
ThreadStart ts = new ThreadStart(Method);
// 若带参数
//ThreadStart ts = new ThreadStart(delegate() { Method(); });
//ThreadStart ts = new ThreadStart(() => { Method("method with param"); });

Thread t = new Thread(ts);
t.IsBackground = true;
t.Start();
}
public void Method()
{
for (int i = 0; i < 10; i++)
{
Console.Write(i);
}
Console.Write("\n");
}

static void Main(string[] args)
{
Console.WriteLine("start");
ThreadMethod();
Console.WriteLine("end");
Console.ReadLine();
}

输出结果:
start
end
0123456789

/* 计划任务 另外开辟新线程,出错了也不影响主线程 */

//可能会出错的方法,没有try catch
private void Method(object param)
{
dataconnection dc = new dataconnection();
dc.datacmd("adsfdfasf insert into threadingXXXX values('" + state_param.ToString() + "*_*" + DateTime.Now.ToLongTimeString() + "')");
}

using System.Threading;
public Timer GetTimer()
{
TimerCallback tcb = new TimerCallback(Method);
Timer timer = new Timer(tcb, "method param", 0, 1000 * 10);
return timer;
}

using System.Threading.Tasks
public void TaskStart()
{
Task.Factory.StartNew(() =>
{
while (true)
{
Task task = new Task(Method, "method param xx?");
task.Wait(1000 * 10);
task.Start();
}
});
}

Application_Start:
Application["timer"] = t.GetTimer();
t.TaskStart();
//回收iis应用程序池可能会出现问题


// windows服务

using System.Threading.Tasks;
using System.Threading;
<span style="white-space:pre">	</span>public void TaskStart()
        {
            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    Task task = new Task(Method, "method param xx?");
                    task.Wait(1000 * 10);
                    task.Start();
task.Wait(Timeout.Infinite);
                }
            });
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: