2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Windows/WPF] バックグラウンドプロセスを作ってみる(.NET5版)

Last updated at Posted at 2021-12-13

もくじ

やりたいこと

以前.Net Framework4.7.2で、バックグラウンドのプロセスを作成した。
それを.NET5で作ろうとしたら、そのままのやり方ではうまくいかなかったので、.NET5でのやり方をメモ。

手順

  1. 「WPFアプリケーション」を選択する。
    image.png

  2. ターゲットフレームワークで「.NET5.0」を選択する。
    image.png

  3. プロジェクトのcsprojファイルをエディタで開いて、<PropertyGroup>の中に、
    <EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>を記入する。
    image.png

  4. WindowlessAppプロジェクトのApp.xamlのビルドアクションをPageにする
    image.png

  5. App.xamlの先頭のにあるStartupUri="MainWindow.xaml"を削除
    image.png

  6. 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でやったときに詰まったところ。)
image.png
必ずcsprojを変更してからビルドアクションを変えること。

参考

こちらの記事を参考にさせて頂きました。ありがとうございます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?