MVThread 5.4.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package MVThread --version 5.4.1                
NuGet\Install-Package MVThread -Version 5.4.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MVThread" Version="5.4.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MVThread --version 5.4.1                
#r "nuget: MVThread, 5.4.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MVThread as a Cake Addin
#addin nuget:?package=MVThread&version=5.4.1

// Install MVThread as a Cake Tool
#tool nuget:?package=MVThread&version=5.4.1                

MVThread Nuget

Multi Threading/Tasking in .NET

Features
  • Support any lists
  • Support two-part lists (usernames-passwords)
  • Support proxy lists and links
  • Supports list position adjustment
  • Show CPM
  • Show elapsed time
  • Show the number of threads running
  • Show progress value
  • Keeping the information of each bot until the end of the work
  • Professional proxy management
Events
  • Start
  • Stop
  • Complete
  • Config
  • ConfigAsync
  • Exception
Using
static void Main(string[] args)
{
    List<string> list = new List<string>();
    for (int i = 1; i <= 1000; i++) //Adds 1-1000 to the list
    {
        list.Add(i.ToString());
    }
    
    IRunner runner = new TaskRunner();
    runner.OnStarted += Run_OnStarted;
    runner.OnStopped += Run_OnStopped;
    runner.OnCompleted += Run_OnCompleted;
    runner.OnConfig += Run_OnConfig;
    runner.OnConfigAsync += Run_OnConfigAsync;

    runner.SetWordlist(list); //Add list to runner
    runner.Start(2); //Add bot count in runner and start the runner
    
    while (runner.IsRunning)
    {
        Console.Title = $"Bot : {runner.Active} - CPM : {runner.CPM} - Elapsed : {runner.Elapsed} ";
        Thread.Sleep(100);
    }

    Console.ReadKey();
}

private static void Run_OnStarted(object sender, EventArgs e)
{
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine("Started!"); //Displays the start message when the runner start
}

private static void Run_OnStopped(object sender, StopEventArgs e)
{
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("Stopped!"); //Displays the stop message when the runner stop
}

private static void Run_OnCompleted(object sender, EventArgs e)
{
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine("Completed!"); //Displays the completed message when the runner complete
}

private static Status Run_OnConfig(object sender, DataEventArgs e)
{
    Console.ForegroundColor = ConsoleColor.White;
    Console.WriteLine(e.Data); //Display the value received from the list
    return Status.OK;
}

private static async Task<Status> Run_OnConfigAsync(object sender, DataEventArgs e)
{
    Console.ForegroundColor = ConsoleColor.White;
    Console.WriteLine(e.Data); //Display the value received from the list
    return Status.OK;
}
How to add a combolist to the runner?
List<string> list = new List<string>();

runner.SetWordlist(list);
How to add 2-part lists to the runner?
List<string> usernames = new List<string>();
List<string> passwords = new List<string>();

runner.SetWordlist(usernames, passwords, ComboType.ChangeUser); //u1:p1-u2:p1
//or
runner.SetWordlist(usernames, passwords, ComboType.ChangePass); //u1:p1-u1:p2
How to set the list position when you start?
runner.SetWordlist(list, number);
//or
runner.SetWordlist(list, list, type, number);
How to add a proxylist to your runner?
List<string> proxies = new List<string>();
runner.SetProxylist(proxies, type);

//or

string url = "https://localhost/proxies/";
var proxies = await runner.GetProxylistAsync(url);
runner.SetProxylist(proxies, type);

//or

string path = "C:\\Proxylist.txt";
var proxies = await runner.GetProxylistAsync(path);
runner.SetProxylist(proxies, type);
Overview of the configuration event
private static void Run_OnConfig(object sender, DataEventArgs e)
{
    string data = e.Data; //Get data from the entered list
    
    if(e.Retry > 100) //Shows the current data retrieval count
        return Status.TheEnd; //In certain circumstances, you can stop all the threads if you wish
        
    if (!e.ProxyDetail.IsProxyLess) //Get a proxy at random
    {
        Uri address = e.ProxyDetail.Proxy.Address;
        ICredentials credentials = e.ProxyDetail.Proxy.NetworkCredential;
        ProxyType proxyType = e.ProxyDetail.Proxy.GetProxyType();
    }
    
    try
    {
        e.Save.WriteLine("goods.txt", data); //Save data in a file
        return Status.OK; //To get the continuation of the list return Status.OK
    }
    catch (Exception ex)
    {
        e.Log.WriteLine(ex.Message); //You can save your messages as a log
        return Status.Retry; //If the operation fails, you can retrieve the current data
    }
}
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
6.0.2 133 2/27/2024
6.0.0 121 2/3/2024
5.4.1 188 9/6/2023
5.4.0 170 7/13/2023
5.3.8 161 6/27/2023
5.3.7 151 6/25/2023
5.3.6 195 4/20/2023
5.3.4 217 4/6/2023
5.3.3 205 4/5/2023
5.3.2 255 3/5/2023
5.3.1 266 2/7/2023
5.3.0 303 2/1/2023
5.2.1 314 1/11/2023
5.2.0 318 12/20/2022
5.1.0 442 9/16/2022
5.0.0 416 6/9/2022