public static void Run()
    {
        List <AsyncLoader> list = new List <AsyncLoader>();

        Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
        foreach (Assembly assembly in assemblies)
        {
            Type[] types = assembly.GetTypes();
            foreach (Type type in types)
            {
                if (!type.IsAbstract && typeof(AsyncLoaderType).IsAssignableFrom(type))
                {
                    AsyncLoader asyncLoader = (AsyncLoader)Activator.CreateInstance(type);
                    list.Add(asyncLoader);
                    loaders[type] = asyncLoader;
                    asyncLoader.CollectLoaders(list);
                }
            }
        }
        if (loaders.Count > 0)
        {
            WorkItemCollection <RunLoader, object> workItemCollection = new WorkItemCollection <RunLoader, object>();
            workItemCollection.Reset(null);
            foreach (AsyncLoader item in list)
            {
                workItemCollection.Add(new RunLoader
                {
                    loader = item
                });
            }
            GlobalJobManager.Run(workItemCollection);
        }
    }