【.NET C#】動作するCPU(プロセッサー)を指定してアプリを起動させる。その2
前回の続きです。
maasasa.hatenablog.com
次は子プロセスを作成します。
現在のソリューションの状態、プロジェクトは前回作成した1つのみです。

ソリューションエクスプローラーのソリューションを右クリックで表示されるメニューから、
追加 > 新しいプロジェクト > WPFアプリ を選びます。名前はProcessAとします。
同様の手順でProcessBプロジェクトも作成します。
こんな感じで3つのプロジェクトが作成できていると思います。
下記コードです、ProcessAとBで名前空間などプロジェクト依存部分以外は共通です。
MainWindow.xaml
<Window x:Class="ProcessA.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ProcessA"
mc:Ignorable="d"
Title="MainWindow" Height="158.824" Width="325">
<Grid>
<Label Content="動作プロセッサ設定値は" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
<Label Name="TargetProcessor" Content="x" HorizontalAlignment="Left" Margin="167,10,0,0" VerticalAlignment="Top" RenderTransformOrigin="2.695,0.538"/>
<Label Content="です" HorizontalAlignment="Left" Margin="196,10,0,0" VerticalAlignment="Top" RenderTransformOrigin="2.695,0.538"/>
</Grid>
</Window>
MainWindow.xaml.cs
using System.Diagnostics;
using System.Windows;
namespace ProcessA {
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
this.Title = "ProcessA";
//自身の動作CPUを取得する。
var processor = Process.GetCurrentProcess().ProcessorAffinity.ToInt32();
this.TargetProcessor.Content = processor.ToString();
}
}
}
ではソリューションをビルドしてアプリを起動します。
アプリが起動したらボタンを押下してProcessAとProcessBを起動します。
起動しました。指定したプロパティ値は効いてるようなのでタスクマネージャーで動作CPUを確認します。

タスクマネージャーでアプリを選択して右クリックで表示されるメニューの「詳細の表示」をクリックします。

詳細タブでアプリを選択して「関係の設定」を表示します。

意図したCPUで動作していることが確認できました。

C#は本当に使いやすいライブラリが用意されていると思います。
こんなに簡単に動作コアを指定できるとは思いませんでした!