مشاركة عبر


Factories مهمة

مصنع مهمة هو يمثله System.Threading.Tasks.TaskFactoryفئة، والذي يقوم بإنشاء Taskالكائنات، أو System.Threading.Tasks.TaskFactory<TResult>فئة، والذي يقوم بإنشاء Task<TResult>الكائنات. تحتوي كل من الفئات على الأساليب التي يمكنك استخدامها إلى:

Taskفئة يحتوي على خاصية ثابتة الذي يمثل الافتراضي TaskFactory. بشكل عام، TaskFactoryيتم بها استدعاء الأساليب باستخدام Factoryخاصية، كـ هو موضح في المثال التالي.

[Visual Basic]

Dim taskA as Task = Task.Factory.StartNew(Sub( ...))

[#C]

Task taskA = Task.Factory.StartNew( () => ...);

في معظم الحالات، لم يكن لديك إلى اشتقاق فئة جديدة من TaskFactory. ومع ذلك، فإنه هو أحياناً مفيدة لتكوين جديد TaskFactoryثم استخدمه لتعيين خيارات معينة أو لربط المهام باستخدام برنامج جدولة مخصصة. يوضح المثال التالي كيفية إلى تكوين جديد TaskFactoryالذي يقوم بإنشاء مهام جميع استخدام المحدد TaskSchedulerوالمحدد TaskCreationOptionsالخيارات.

Class Program
    Shared Sub Main()
        Dim cts As CancellationTokenSource = New CancellationTokenSource()
        Dim _factory As TaskFactory = New TaskFactory(
                                        cts.Token,
                                        TaskCreationOptions.PreferFairness,
                                        TaskContinuationOptions.ExecuteSynchronously,
                                        New MyScheduler())

        Dim t2 = _factory.StartNew(Sub() DoWork())
    End Sub
    Shared Sub DoWork()
        ' ...
    End Sub
class Program
{
    static CancellationTokenSource cts = new CancellationTokenSource();
    private static TaskFactory _factory = new TaskFactory(
                                        cts.Token,
                                        TaskCreationOptions.PreferFairness,
                                        TaskContinuationOptions.ExecuteSynchronously,
                                        new MyScheduler());

    static void Main(string[] args)
    {
        var t2 = _factory.StartNew(() => DoWork());            
    }

    static void DoWork() {/*...*/ }
}

راجع أيضًا:

موارد أخرى

Advanced Topics (Task Parallel Library)