Useful C# methods

Download image

private static void DownloadImage(string url)
{
    var fileName = url.Split('/').Last();
    if(File.Exists(fileName))
    {
        return;
    }
    Console.WriteLine(url);
    var client = new WebClient();
    client.Headers.Add("user-agent", "Mozilla/5.0 (Linux; Android 10; Redmi Note 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.98 Safari/537.36");
    client.DownloadFile(url.ToString(), fileName);
}

Get all files

// GetAllFiles("c:\", "*.exe")
public static IEnumerable<string> GetAllFiles(string path, string mask, Func<FileInfo, bool>? checkFile = null)
{
    if (string.IsNullOrEmpty(mask))
        mask = "*.*";
    var files = Directory.GetFiles(path, mask, SearchOption.AllDirectories);
    foreach (var file in files)
    {
        if (checkFile == null || checkFile(new FileInfo(file)))
            yield return file;
    }
}

Hosted service

public static class Program
{
    public static void Main(string[] args)
    {
        var host = Host.CreateDefaultBuilder(args)
            .UseWindowsService() // support windows service
            .ConfigureServices((hostContext, services) =>
            {
                services.AddHostedService<TestService>();
            }).Build();
        try
        {
            host.Run();
        }
        finally
        {
            host.Dispose();
        }
    }
}

public sealed class TestService : IHostedService
{
    private int _counter;

    public Task StartAsync(CancellationToken cancellationToken)
    {
        new Thread(() =>
        {
            Thread.CurrentThread.IsBackground = true;
            while (true)
            {
                Thread.Sleep(500);
                _counter++;
                Console.WriteLine(_counter);
            }
        }).Start();

        return Task.CompletedTask;
    }

    public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}

Last updated