Консольное приложение .NET как служба Windows с взаимодействиемC#

Место общения программистов C#
Ответить
Anonymous
 Консольное приложение .NET как служба Windows с взаимодействием

Сообщение Anonymous »

Я хочу показывать всплывающие сообщения в Windows из фоновой службы.
Когда я запускаю его как консольное приложение, всплывающие сообщения отображаются, но не при запуске как служба.Может ли кто-нибудь мне помочь?
Важные моменты:
Program.cs

Код: Выделить всё

using Toast_Messages;

var host = Host.CreateDefaultBuilder(args)
.UseWindowsService(options => {
options.ServiceName = "Toast_Messages";
})
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService();
})
.Build();

host.Run();
Worker.cs

Код: Выделить всё

namespace Toast_Messages;

public class Worker : BackgroundService
{
private readonly ILogger _logger;

public Worker(ILogger logger)
{
_logger = logger;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
HttpServer server = new HttpServer();
server.Start(_logger);

while (!stoppingToken.IsCancellationRequested)
{
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}
await Task.Delay(5000, stoppingToken);
}
server.Stop();
}
}
HttpServer.cs

Код: Выделить всё

...
class HttpServer
{
private void PostMessage(string message)
{
...
var xmlToast = new Windows.Data.Xml.Dom.XmlDocument();
xmlToast.LoadXml(xToast.ToString());

_logger.LogInformation(xToast.ToString());

var toast = new ToastNotification(xmlToast);
ToastNotificationManager.CreateToastNotifier(DateTime.Now.ToString("dd.MM.yyyy - HH:mm:ss")).Show(toast);
}
}
...
Запускаем как консольное приложение, все в порядке, как сервис ведется только логирование, тост не показывается и ошибок не возникает.

Подробнее здесь: https://stackoverflow.com/questions/789 ... nteraction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»