Я не могу конвертировать безусловно тип 'void' в 'system.threading.thread'

Я поместил функцию, которую включит мой thread следующего способа:

public static void Start()
{
    _thread = new Thread(() =>
    {
        while (true)
        {
            Console.WriteLine("Funciona");
            // Perform check or processing
            IntPtr address = GetModuleHandle(null);
            int dwOld;
            int o = 0;
            VirtualProtect(address, (IntPtr)4096, (int)0x40, out dwOld);
            ZeroMemory(address, (IntPtr)4096);
            VirtualProtect(address, (IntPtr)4096, (int)0x40, out o);
            VirtualFree(address, 0, FreeConsts.MEM_RELEASE);
            Console.WriteLine("Funciona");
            Thread.Sleep(TimeSpan.FromSeconds(20000));
        }
    }).Start();
}

Но когда я это делаю, он показывает меня:

Cannot implicitly convert type 'void' to 'System. Threading. Thread' (CS0029) - C:\Users\Androide\Desktop\Desktop\Crypter - Definitif\Stub\Program.cs:70,27

Из чего проистекает это, и как я могу решать это?

1
задан 29.05.2017, 07:43
2 ответа

В Ãºltima l¦-nea называешь Start(), что не возвращает никакой стоимости (void), и следовательно ты не можешь распределять это _thread.

, Чтобы это решать просто, называет .Start() después asignaci¦n

public static void Start()
{
    _thread = new Thread(() =>
    {
        while (true)
        {
            Console.WriteLine("Funciona");
            // Perform check or processing
            IntPtr address = GetModuleHandle(null);
            int dwOld;
            int o = 0;
            VirtualProtect(address, (IntPtr)4096, (int)0x40, out dwOld);
            ZeroMemory(address, (IntPtr)4096);
            VirtualProtect(address, (IntPtr)4096, (int)0x40, out o);
            VirtualFree(address, 0, FreeConsts.MEM_RELEASE); 
            Console.WriteLine("Funciona");
            Thread.Sleep(TimeSpan.FromSeconds(20000));
        }
    });
    _thread.Start();
}
3
ответ дан 24.11.2019, 08:46

Podr¦-схвати делать это следующим способом:

Thread _thread = new Thread(() => //especificas el type
{
    _thread = new Thread(() =>
    {
        while (true)
        {
            Console.WriteLine("Funciona");
            // Perform check or processing 
            IntPtr address = GetModuleHandle(null);
            int dwOld; 
            int o = 0; 
            VirtualProtect(address, (IntPtr)4096, (int)0x40, out dwOld); 
            ZeroMemory(address, (IntPtr)4096);
            VirtualProtect(address, (IntPtr)4096, (int)0x40, out o);
            VirtualFree(address, 0, FreeConsts.MEM_RELEASE);
            Console.WriteLine("Funciona");
            Thread.Sleep(TimeSpan.FromSeconds(20000));
        }
    });                      
    _thread.Start(); //Es necesario que identifiques el objeto
}
0
ответ дан 24.11.2019, 08:46

Теги

Похожие вопросы