【.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#は本当に使いやすいライブラリが用意されていると思います。
こんなに簡単に動作コアを指定できるとは思いませんでした!