Een .NET-consoletoepassing op de achtergrond uitvoeren

Ik heb een consoletoepassing geschreven in C# die volgens de planning ongeveer elke 15 minuten wordt uitgevoerd met behulp van de ingebouwde Windows Taakplanner.

Elke keer dat het wordt uitgevoerd, verschijnt het zwarte consolevenster voor de duur van de uitvoering en sluit het vervolgens. Ik schrijf niets naar de console. Is er een manier om dit op de achtergrond te laten draaien?


Antwoord 1, autoriteit 100%

Project > Eigenschappen> Tabblad Toepassing > wijzig het uitvoertype in “Windows-toepassing”.

Geen consolevenster meer.


Antwoord 2, autoriteit 29%

Eenvoudig!

Het lijkt moeilijk te geloven, maar het werkt als een charme. Ik heb dit gebruikt voor sommige setup-projecten, wanneer je aangepaste taken wilt uitvoeren zonder dat er tekenen van zijn.

  • Maak het project als een Windows-toepassingsproject (dit is het moeilijkste gedeelte).
  • Bel nooit in welke vorm dan ook. Ga gewoon door zoals in uw consoletoepassing

    class Program
    {
        static void Main(string[] args)
        {
            // Just don't call Application.Run(new frmMain(args));
            // ... your code
        }
     }
    

Dit komt omdat Windows-toepassingsprojecten niet echt anders zijn dan console, behalve vanwege de eerste vorm en verwijzingen.
Het is een volledig verborgen uitvoering. Probeer het!


Antwoord 3, autoriteit 6%

U kunt de Windows API gebruiken om de consolebox te minimaliseren. Anders kunt u er een Windows EXE-bestand van maken dat geen formulier laadt en System.Windows.Forms.Application.Run()aanroepen.

Code om de console te minimaliseren:

[DllImport( "user32.dll" )]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public const int SW_SHOWMINIMIZED = 2;
IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(winHandle, SW_SHOWMINIMIZED);

Antwoord 4, autoriteit 5%

Hoe zit het met het implementeren van de app in een Windows-service? U kunt het interval instellen op 15 minuten en de bewerking uitvoeren in de timer_tick.


Antwoord 5, autoriteit 3%

Als u al een Windows Console-app heeft gemaakt, kunt u het uitvoertype van uw app eenvoudig wijzigen in Windows-toepassing.

Onder uw project:
Ga naar Eigenschappen > Sollicitatie
Selecteer “Windows-toepassing” als het uitvoertype.

Dit zou de minste impact hebben en u kunt uw Windows Taakplanner dezelfde taak laten uitvoeren.


Antwoord 6, autoriteit 2%

Als het niets naar de console schrijft, kun je er een service van maken.
http://msdn.microsoft.com/en- us/library/9k985bc9%28VS.80%29.aspx


Antwoord 7

Het wordt alleen weergegeven als het is gepland om te worden uitgevoerd als dezelfde gebruiker die momenteel is aangemeld. Maak een andere gebruiker op de computer met een belachelijk lang wachtwoord, stel het in als beheerder (alleen indien nodig) en plan de taak om uitvoeren als die gebruiker.


Antwoord 8

Dit is eenvoudig. Stel de taak zo in dat deze wordt uitgevoerd onder een account dat niet uw aanmeldingsaccount is.

Other episodes