smart thread pool 【1】简单的使用

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;

using Amib.Threading;

using System.Threading;

 

namespace ConsoleApplication1

{

    class Program

    {

        //[STAThread]

        static void Main1(string[] args)

        {

   //stp状态设置

            STPStartInfo stp = new STPStartInfo();

            stp.DisposeOfStateObjects = true;

            stp.CallToPostExecute = CallToPostExecute.Always;

            stp.ThreadPriority = ThreadPriority.Highest;

            stp.UseCallerCallContext = true;

            stp.MaxWorkerThreads = 20;

 

            SmartThreadPool smart = new SmartThreadPool(stp);

           

   //开始

            smart.Start();

 

   //这个IWorkItemResult 是个接口,这后面的写法就是接口里面实现的方法么?对c#不是理解呢。。。@。@

   //这么用是能明白的。

            IWorkItemResult result = smart.QueueWorkItem(delegate(object state)

            {

                Console.WriteLine("Thread:{0}; State:{1}; Priority: {2}", Thread.CurrentThread.ManagedThreadId, state, Thread.CurrentThread.Priority.ToString());

                return DateTime.Now;

            }, 123);

 

            Thread.Sleep(1000);

 

            IWorkItemResult result1 = smart.QueueWorkItem(delegate(object state)

            {

                return DateTime.Now;

            }, null);

 

            SmartThreadPool.WaitAll(new IWorkItemResult[] { result,result1 });//等待所有的工作线程的返回

   //结果的输出,本以为是线程的交互运行,可是这里是单独运行的哈。

            Console.WriteLine(result.Result);

            Console.WriteLine(result1.Result);

 

            smart.WaitForIdle();

            smart.Shutdown();

 

            Console.ReadLine();

        }

    }

}网上找了很久,以为很容易找到,可是发现没什么中文文档,最后应该是找到了项目的网站,可是也没能找到标准的API,除了一些DOME的实例。其实线程池的框架也有不少,只不过在这里我用上了STP,其实自己对线程不是太在行的~ 改天继续!

 

posted on 2009-10-23 22:35  delphi2007  阅读(968)  评论(0编辑  收藏  举报