Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79

Не работает служба

26.02.2024, 14:14. Показов 2328. Ответов 40

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Впервые пробую сделать службу и столкнулся с проблемой того, что она устанавливается, но не запускается.
Помогите понять в чём проблема
Ссылка на гитхабе чтобы не слать тонну кода
И кроме самой службы, есть вопрос с Form1.cs
не понимаю почему у меня button5_Click и button6_Click просто открывают командную строку?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2024, 14:14
Ответы с готовыми решениями:

Почему служба не работает?
Здравствуйте! Написал не хитрую службу: private void timer1_Tick(object sender, EventArgs e) { var...

Служба некорректно работает в Windows 7
Добрый день! Помогите пожалуйста, не знаю что делать. Состряпал службу на C#. Две основные её функции это создание прослушки на 502...

Не работает служба
Добрый день. Написал службу, которая на данный момент должна делать простую вещь. public Service1() { ...

40
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,757
26.02.2024, 14:25
Цитата Сообщение от Raketa12 Посмотреть сообщение
Впервые пробую сделать службу и столкнулся с проблемой того, что она устанавливается, но не запускается
Может быть что угодно:
1. Не находит какой-нибудь конфиг.
2. Не находит dotnet нужной версии.
3. Не хватает прав на какой-нибудь файл/каталог.
4. Не хватает прав на прослушивание сокета.
... и т.п.

Загляните в системный журнал, там могут быть подробности исключения, из-за которого служба упала.
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
26.02.2024, 14:35  [ТС]
kotelok, В журнале одна запись при запуске
Невозможно запустить службу. Процесс службы не может установить связь с контроллером службы
Добавлено через 1 минуту
Сервис выглядит следующим образом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
partial class FtpTransport : ServiceBase
{
    Tranport tranport;
    public FtpTransport()
    {
        InitializeComponent();
        this.CanStop = true;
        this.CanPauseAndContinue = true;
        this.AutoLog = true;
    }
 
    protected override void OnStart(string[] args)
    {
        tranport = new Tranport();
        Thread tranportThread = new Thread(new ThreadStart(tranport.Start));
        tranportThread.Start();
 
        //logger = new Logger();
        //Thread loggerThread = new Thread(new ThreadStart(logger.Start));
        //loggerThread.Start();
    }
 
    protected override void OnStop()
    {
        tranport.Stop();
        Thread.Sleep(1000);
    }
}
Его инсталятор:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[RunInstaller(true)]
public partial class FtpTransportInstaller : Installer
{
    ServiceInstaller serviceInstaller;
    ServiceProcessInstaller processInstaller;
    public FtpTransportInstaller()
    {
        InitializeComponent();
        serviceInstaller = new ServiceInstaller();
        processInstaller = new ServiceProcessInstaller();
 
        processInstaller.Account = ServiceAccount.LocalSystem;
        serviceInstaller.StartType = ServiceStartMode.Automatic;
        serviceInstaller.ServiceName = "FtpTransport";
        Installers.Add(processInstaller);
        Installers.Add(serviceInstaller);
    }
}
0
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,757
26.02.2024, 14:49
А если удалить службу и потом снова её зарегистрировать, но через стандартную виндовую утилиту "sc", а не через [RunInstaller], то проблема повторяется?

P.S.: ссылка на гит нерабочая.
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
26.02.2024, 15:01  [ТС]
kotelok, Не заметил что он приватный.
Сделал публичным
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
26.02.2024, 15:19
Raketa12, проблема в методе Main:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
 
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
            new FtpTransport()
            };
            ServiceBase.Run(ServicesToRun);
        }
Метод Application.Run не вернет управление пока не завершится приложение. А оно не может завершиться т.к. форму некому закрыть. В целом вы пытаетесь смешать несовместимые вещи - Windows Forms и службу. Последняя должна быть отдельным процессом без UI.
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
26.02.2024, 15:25  [ТС]
OwenGlendower, Если я правильно понял то мне в солюшен нужно добавить ещё один проект, который будет отвечать чисто за сервис?
А я же смогу обращаться к методам из текущего проекта?
Метод Application.Run не вернет управление пока не завершится приложение. А оно не может завершиться т.к. форму некому закрыть. В целом вы пытаетесь смешать несовместимые вещи - Windows Forms и службу. Последняя должна быть отдельным процессом без UI.
По идее всего этого действа у меня должен быть сервис и программка с UI в которой я смогу управлять службой(установить, стартануть, остановить и заредачить json с путями)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
26.02.2024, 15:40
Цитата Сообщение от Raketa12 Посмотреть сообщение
мне в солюшен нужно добавить ещё один проект, который будет отвечать чисто за сервис?
Да. И возможно еще один для кода который нужен и в службе и в GUI приложении.

Цитата Сообщение от Raketa12 Посмотреть сообщение
А я же смогу обращаться к методам из текущего проекта?
Да, но с большой оговоркой. Нужно помнить одну простую вещь сервис и UI приложение будут находиться в разных процессах. Поэтому прямое взаимодействие между ними (через вызов методов) невозможно.
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
26.02.2024, 16:24  [ТС]
OwenGlendower, Получается модель сего произведения в идеале должна будет состоять из 3 "компонентов"
1) проект с сервисом
2) проект с GUI
3) библа классов
Правильно понял идею?
0
2279 / 1596 / 399
Регистрация: 26.06.2017
Сообщений: 4,719
Записей в блоге: 1
26.02.2024, 16:36
Цитата Сообщение от Raketa12 Посмотреть сообщение
Правильно понял идею?
Ну можно и так, только это никак не отменяет этого:
Цитата Сообщение от OwenGlendower Посмотреть сообщение
сервис и UI приложение будут находиться в разных процессах
Для взаимодействия гуглите в сторону межпроцессное взаимодействие.
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
26.02.2024, 19:29  [ТС]
Uswer, OwenGlendower, Спасибо.
Думаю когда я переварю переезд на net 6 и соберу всё в итоговом виде, снова подниму эту тему.
Был бы благодарен если бы вы накинули мне материала с примерами по этому вопросу. Особенно интересно создание службы.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
26.02.2024, 20:40
Raketa12, я могу только ссылки на документацию привести, но вы их наверняка и без меня видели.
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
26.02.2024, 22:29
Цитата Сообщение от Raketa12 Посмотреть сообщение
сли я правильно понял то мне в солюшен нужно добавить ещё один проект
можно всек это сделать в одном проекте и в зависимости от командной строки или от окружения запускать либо службу, либо консоль, либо форму. Можно проверить а вообще пользовательский интерфейс будет ли показан через свойство Environment.UserInteractive.
1
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
27.02.2024, 15:34  [ТС]
OwenGlendower, вроде разобрался и получилось следующее:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void Main(string[] args)
{
    HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
    builder.Services.AddWindowsService(options =>
    {
        options.ServiceName = "FTPT";
    });
 
    LoggerProviderOptions.RegisterProviderOptions<
        EventLogSettings, EventLogLoggerProvider>(builder.Services);
 
    builder.Services.AddHostedService<Worker>();
 
    IHost host = builder.Build();
    host.Run();
}
В классе Worker
C#
1
2
3
4
5
6
7
8
9
10
11
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
 
    while (!stoppingToken.IsCancellationRequested)
    {
        tranport = new Tranport();
        tranport.Start();//Запускаю нужный мне метод
        _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
        await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);
    }
}
И всё работает(проверил просто запустив tranport.Start(); через форму и накдывал в несколько проходов туда файлы, которые успешно переезжали на FTP) , но не добавляется в службы Windows.
В Форме я сделал 2 кнопки для добавления и удаления службы
Их методы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public bool DeleteService()
{
    try
    {
        string serviceName = "FTPT";
        string script = "sc delete " + serviceName + "";
        Process.Start(new ProcessStartInfo
        {
            FileName = "cmd",
            Arguments = script + "exit",
            WindowStyle = ProcessWindowStyle.Hidden,
        });
        return true;
    }
    catch
    {
        return false;
    }
}
 
public bool InstallService()
{
    string serviceName = "FTPT";
    string binPath = "binpath=" + Environment.CurrentDirectory + "\\TransportService.exe";
    string script = "sc create " + serviceName +" "+ binPath + " type=own start=auto";
    try
    {
        Process.Start(new ProcessStartInfo
        {
            FileName = "cmd",
            Arguments = @"" + script + "" + " exit",
            WindowStyle = ProcessWindowStyle.Hidden,
        });
        return true;
    }
    catch 
    {
        return false;
    }
}
В них меня смущает:
1) они тупо открывают командную строку в папке binPath
2) try\catch тут полная фигня которая врятли вообще когда нибудь сработает. Хочу как то обрабатывать результат выполнения команды, но не знаю как
0
27.02.2024, 16:45

Не по теме:

Цитата Сообщение от OwenGlendower Посмотреть сообщение
В целом вы пытаетесь смешать несовместимые вещи - Windows Forms и службу.
Технически можно зафигачить внутри форм Host, и порой даже так делают. Но запустить такой exe как службу -- это прям задача со звездочкой, причем лишенная смысла.

0
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
27.02.2024, 17:19
Цитата Сообщение от Raketa12 Посмотреть сообщение
И всё работает
Только вы каждые пять минут создаете новый объект транспорт и вызывыете его метод Start. Это именно то, что вам нужно?
Или же все-таки нужно создать один экземпляр объекта?

Добавлено через 2 минуты
Возможно задумывалось как-то так:
C#
1
2
3
4
5
6
7
private readonly Tranport tranport = new Tranport();
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
 
    tranport.Start(stoppingToken);
    return Task.CompletedTask;
}
Или так:
C#
1
2
3
4
5
6
7
private readonly Tranport tranport = new Tranport();
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
    await Task.Yield():
    tranport.Start(stoppingToken);
    
}
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
27.02.2024, 17:52  [ТС]
IamRain, Согласен, задумывалось не так.
Переделал на это
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private readonly ILogger<Worker> _logger;
private readonly Tranport tranport;
 
public Worker(ILogger<Worker> logger)
{
    _logger = logger;
    tranport = new Tranport();
}
 
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
 
    while (!stoppingToken.IsCancellationRequested)
    {
        tranport.Start(stoppingToken);//Запускаю нужный мне метод
        _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
        await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);
    }
}
А сама реалиация метода старт правильная вообще?
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public void Start(CancellationToken stoppingToken)
{
    
    while (enabled)
    {
        if(stoppingToken.IsCancellationRequested)
            enabled = false;
        List<TransportSettings> settings = worker.GetSettingsList();
        foreach (TransportSettings setting in settings)
        {
            string[] localFiles = GetFiles(setting.CurentDirectory);
            string[] serverFiles = GetServerFiles(setting.Server, setting.ServerDirectory, setting.Login, setting.Password);
            if(localFiles != null)
            {
                foreach (string file in localFiles)
                {
                    string transportFilePath = Path.Combine(setting.CurentDirectory, file);
                    
                    if(serverFiles != null)
                    {
                        int pos = Array.IndexOf(serverFiles, file);
                        if (pos > -1)
                        {
                            DeliteLocalFile(transportFilePath);
                        }
                        else
                        {
                            Upload(setting.Server, setting.ServerDirectory, transportFilePath, setting.Login, setting.Password);
                            DeliteLocalFile(transportFilePath);
                        }
                    }
                    else
                    {
                        Upload(setting.Server, setting.ServerDirectory, transportFilePath, setting.Login, setting.Password);
                        DeliteLocalFile(transportFilePath);
                    }
                }
            }
        }
        //5 минут ожидания
        Thread.Sleep(300000);
    }
}

Но это всё равно не решает главной проблемы.
Проблемы с установкой и удалением службы.
Сейчас переписал метод установки службы на
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public string InstallService()
{
    string serviceName = "FTPT";
    string binPath = "binpath='" + Environment.CurrentDirectory + "\\TransportService.exe'";
    string script = "sc create " + serviceName +" "+ binPath + " type = own start = auto";
    try
    {
        Process p = new Process();
        p.StartInfo.FileName = "Cmd.exe";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.Arguments = script + "" + " exit";
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        p.Start();
        string output = p.StandardOutput.ReadToEnd();
        p.WaitForExit();
        
        return output;
    }
    catch(Exception ex) 
    {
        return ex.Message;
    }
}
Он мне возвращает строку и строка
openscmanager ошибка 5 отказано в доступе
Добавлено через 5 минут

Не по теме:

Галя, у нас отмена!


Я только что понял, что я нагородил
У меня цикл в цикле
Сейчас буду переделывать

Добавлено через 4 минуты
Переписал исполняемый метод
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public async Task<bool> StartOneTime()
{
    try
    {
        List<TransportSettings> settings = worker.GetSettingsList();
        foreach (TransportSettings setting in settings)
        {
            string[] localFiles = GetFiles(setting.CurentDirectory);
            string[] serverFiles = GetServerFiles(setting.Server, setting.ServerDirectory, setting.Login, setting.Password);
            if (localFiles != null)
            {
                foreach (string file in localFiles)
                {
                    string transportFilePath = Path.Combine(setting.CurentDirectory, file);
 
                    if (serverFiles != null)
                    {
                        int pos = Array.IndexOf(serverFiles, file);
                        if (pos > -1)
                        {
                            DeliteLocalFile(transportFilePath);
                        }
                        else
                        {
                            Upload(setting.Server, setting.ServerDirectory, transportFilePath, setting.Login, setting.Password);
                            DeliteLocalFile(transportFilePath);
                        }
                    }
                    else
                    {
                        Upload(setting.Server, setting.ServerDirectory, transportFilePath, setting.Login, setting.Password);
                        DeliteLocalFile(transportFilePath);
                    }
                }
            }
 
        }
        return true;
    }
    catch
    {
        return false;
    }
}

Его запуск оставил так
C#
1
2
3
4
5
6
7
8
9
10
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
 
    while (!stoppingToken.IsCancellationRequested)
    {
        await tranport.StartOneTime();//Запускаю нужный мне метод
        _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
        await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);
    }
}
Добавлено через 4 минуты
P.S. Task возвращает bool потому что он мне нужен ещё и в случае ручного запуска, чтобы вернуть мне завершился он или нет
P.S.2 Да Task.CompletedTask я пока не осилил и придумываю костыли
0
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
27.02.2024, 18:05
Цитата Сообщение от Raketa12 Посмотреть сообщение
У меня цикл в цикле
У вас многократный запуск, а требуется однократный ятп.
Вполне себе рабочий вариант:
C#
1
2
3
4
5
6
private readonly Tranport tranport = new Tranport();
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{    
    await Task.Yield();
    tranport.Start(stoppingToken);    
}
Цитата Сообщение от Raketa12 Посмотреть сообщение
А сама реалиация метода старт правильная вообще?
Можно и чище написать, для начала пойдет.

И Tranport наконец-то переименуйте уже в Transport.

Добавлено через 12 минут
Цитата Сообщение от Raketa12 Посмотреть сообщение
Его запуск оставил так
Ну окей, периодическая операция значит.
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
28.02.2024, 16:26  [ТС]
Получается проблемы внутри цикла выполняемого моей службой я решил.
Осталась проблема с установкой и удалением службы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public string InstallService()
{
    string serviceName = "FTPT";
    string binPath = "binpath='" + Environment.CurrentDirectory + "\\TransportService.exe'";
    string script = "sc create " + serviceName +" "+ binPath + " type = own start = auto";
    try
    {
        Process p = new Process();
        p.StartInfo.FileName = "Cmd.exe";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.Arguments = script + "" + " exit";
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        p.Start();
        string output = p.StandardOutput.ReadToEnd();
        p.WaitForExit();
        
        return output;
    }
    catch(Exception ex) 
    {
        return ex.Message;
    }
}
Он мне возвращает ответ:
openscmanager ошибка 5 отказано в доступе
Я погуглил и в найденых вариантах речь идёт об усправлении службами на сетевых компьютерах
А мне нужно установить службу на локальный

Добавлено через 1 час 34 минуты
Нашел следующую документацию по своему вопросу
Создание установщика службы Windows
Добавил в проект CliWrap
Но благодаря ужаснейшему переводу не могу понять куда я должен припахать данный участок кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using CliWrap;
 
const string ServiceName = ".NET Joke Service";
 
if (args is { Length: 1 })
{
    try
    {
        string executablePath =
            Path.Combine(AppContext.BaseDirectory, "App.WindowsService.exe");
    
        if (args[0] is "/Install")
        {
            await Cli.Wrap("sc")
                .WithArguments(new[] { "create", ServiceName, $"binPath={executablePath}", "start=auto" })
                .ExecuteAsync();
        }
        else if (args[0] is "/Uninstall")
        {
            await Cli.Wrap("sc")
                .WithArguments(new[] { "stop", ServiceName })
                .ExecuteAsync();
    
            await Cli.Wrap("sc")
                .WithArguments(new[] { "delete", ServiceName })
                .ExecuteAsync();
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
    }
 
    return;
}
0
0 / 0 / 0
Регистрация: 11.11.2021
Сообщений: 79
25.03.2024, 17:25  [ТС]
Доброго времени.
Вопрос следующий
Моя служба запускается и сразу же останавливается.
В Журнале событий я вижу следующую ошибку
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Windows\system32\Data\ProgrammData.j son'.
ProgrammData.json это грубо говоря файл с настройками.
Он лежит в папке "C:\Program Files\RTech\FtpTransport\Data\ProgrammDa ta.json"
И доступ к нему сделан через библу классов.
Есть 3 программа которая прекрасно работает с этим файлом, а сервис почему не по тому пути идёт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2024, 17:25
Помогаю со студенческими работами здесь

Служба работает не на всех ПК
Добрый день, форумчане! Сильно не пинайте, т.к. в net начинающий :). Возникла проблема, досталась программа по наследству на c# и...

Не работает служба WCF
Подскажите пожалуйста почему не получаются данные, public interface IService { string GetName();

Служба, которая работает по расписанию
Как создаются службы, которые должны что-то делать каждые N минут? Я так понимаю, что при запуске службы инициализируется таймер и...

не работает служба поиска
Всем привет, столкнулся с такой проблемой, не работает служба поиска Windows. Сама иконка поиска находится на панели задач, при нажатии...

Не работает служба mysql
Пытаюсь вручную установить веб сервер. За основу взял вот это руководство http://habrahabr.ru/post/203012/. Застрял на том что не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru