mirror of
https://github.com/farcasclaudiu/SmartThreadPool.git
synced 2026-06-22 09:01:19 +03:00
4d6ffb5851
SmartThreadPool v2.0
59 lines
1.2 KiB
C#
59 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using Amib.Threading;
|
|
|
|
namespace STPExamples
|
|
{
|
|
public class MyResource : IDisposable
|
|
{
|
|
// ...
|
|
|
|
public void DoIt()
|
|
{
|
|
//...
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
//...
|
|
}
|
|
}
|
|
|
|
public class ThreadEventsExample
|
|
{
|
|
public static void Main()
|
|
{
|
|
|
|
SmartThreadPool stp = new SmartThreadPool();
|
|
stp.OnThreadInitialization += new ThreadInitializationHandler(OnInitialization);
|
|
stp.OnThreadTermination += new ThreadTerminationHandler(OnTermination);
|
|
|
|
stp.QueueWorkItem(DoSomeWork);
|
|
}
|
|
|
|
[ThreadStatic]
|
|
private static MyResource _resource;
|
|
|
|
public static void OnInitialization()
|
|
{
|
|
// Initialize the resource
|
|
_resource = new MyResource();
|
|
}
|
|
|
|
private static object DoSomeWork(object state)
|
|
{
|
|
// Use the resouce
|
|
_resource.DoIt();
|
|
|
|
return null;
|
|
}
|
|
|
|
public static void OnTermination()
|
|
{
|
|
// Do resource cleanup
|
|
_resource.Dispose();
|
|
}
|
|
}
|
|
}
|