もくじ
やりたいこと
以前.Net Framework4.7.2
で、バックグラウンドのプロセスを作成した。
それを.NET5で作ろうとしたら、そのままのやり方ではうまくいかなかったので、.NET5でのやり方をメモ。
手順
-
プロジェクトのcsprojファイルをエディタで開いて、
<PropertyGroup>
の中に、
<EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
を記入する。
-
App.xaml.cs に '[STAThread]' をつけてMainメソッドを作る
App.xaml.cs
using System;
using System.Windows;
namespace WpfApp9
{
public partial class App : Application
{
[STAThread]
public static void Main()
{
App app = new App();
app.InitializeComponent();
app.Run();
}
}
}
これで、裏で動く.NET5版プログラム完成。
ただ、このままだと終わらないプログラムになるので、終わらせる処理のテンプレとして、下記に「起動してから10秒後に終わるバックグラウンドプロセス」のひな型を置いておく。
起動10秒で終了するApp.xaml.cs
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
namespace WpfApp9
{
public partial class App : Application
{
[STAThread]
public static void Main()
{
App app = new App();
app.InitializeComponent();
Task.Run(() =>
{
Thread.Sleep(10000);
App.Current.Dispatcher.Invoke(() =>
{
Application.Current.Shutdown();// ★これでアプリ終了する
});
});
app.Run();
}
}
}
注意
csprojへの追記をする前にビルドアクションを変えてしまうと、このようなエラーがでる。
(これが、.NetFW4.8でやったやり方そのままを.NET5でやったときに詰まったところ。)
必ずcsprojを変更してからビルドアクションを変えること。
参考
こちらの記事を参考にさせて頂きました。ありがとうございます。