Cómo llamar a una tarea no estática en un método estático sin usar la clase

programación


Hola chicos,

Me pregunto si hay alguna solución para llamar a una tarea no estática en un método estático, por ejemplo, esta es mi tarea no estática.

C#
public async Task login(string user, string password)
        {

        }

y este es mi método estático

C#
public static void checker(string email, string password)
       {
           while (true)
           {
               login(email, password);
           }
       }

pero no se puede llamar y no quiero usar clases para ellos.

Lo que he probado:

………………………………………….

Solución 1

Puede hacerlo utilizando algún objeto global o algún objeto local en el método estático.

Pero según leí, C# también puede iniciar un hilo en un método de instancia. Leer el documentación de microsoft.

PD: respondiendo a tu pregunta, aprendí un poco 🙂

Solución 2

No. No directamente.
Un miembro no estático siempre necesita una instancia de objeto con la que trabajar porque se da a entender que puede tocar los datos de la instancia. y eso sería imposible sin la referencia del objeto.

Funciona en el ejemplo proporcionado por KarstenK porque el método miembro está incluido en un delegado.
Que es lo que podrías hacer: pasar delegados.
Pero aún así tendrías que pasarlos de alguna manera; no puedes simplemente “llamar” a un método de instancia aleatorio sin crear un delegado. A menos que utilice un objeto global.

Pero, sinceramente, en casos como este, sus problemas son una señal de que está intentando solucionar el problema equivocado. Probablemente sea una señal de que su método de ‘inicio de sesión’ no debería ser un método de instancia. O si realmente es necesario, no deberías intentar evitar el uso de la instancia.

コメント

タイトルとURLをコピーしました