简体   繁体   English

C#泛型,用于在另一个线程中运行函数

[英]C# generic for running function in another thread

I have a few generic function for running methods in background threads. 我有一些用于在后台线程中运行方法的泛型函数。 Are there any dangers here outside of normal thread sync issues? 除了正常的线程同步问题,这里还有任何危险吗?

    public static void ThreadRunReturn<TReturn, TArgument>(Func<TArgument, TReturn> func, TArgument arg, bool background = true)
    {
        Thread th = new Thread(unused => func(arg));
        th.IsBackground = background;
        th.Start(th);
    }
    public static void ThreadRunReturn<TReturn, TArgument1, TArgument2>(Func<TArgument1, TArgument2, TReturn> func, TArgument1 arg1, TArgument2 arg2, bool background = true)
    {
        Thread th = new Thread(unused => func(arg1, arg2));
        th.IsBackground = background;
        th.Start(th);
    }

    public static void ThreadRun<TArgument>(Action<TArgument> action, TArgument arg, bool background = true)
    {
        Thread th = new Thread(unused => action(arg));
        th.IsBackground = background;
        th.Start(th);
    }
    public static void ThreadRun<TArgument1, TArgument2>(Action<TArgument1, TArgument2> action, TArgument1 arg1, TArgument2 arg2, bool background = true)
    {
        Thread th = new Thread(unused => action(arg1, arg2));
        th.IsBackground = background;
        th.Start(th);
    }

background threads do not keep the application alive. 后台线程无法使应用程序保持活动状态。 if you have long running background processes running and your application terminates, it will not wait for those background threads to complete - it will kill them. 如果长时间运行的后台进程正在运行并且您的应用程序终止,则它不会等待这些后台线程完成-它将杀死它们。 just something to keep in mind. 只是要记住的一点。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM