C#で書かれたWindowsアプリケーションを起動しているうちに、起動に時間がかかります。 Main()
メソッドに入る時間は1分以上です。以下のアセンブリは、私のプロジェクトで使用されている:起動時に長い時間がかかるアプリケーション
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="PresentationFramework">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="UIAutomationProvider">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsFormsIntegration">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
メイン:
static class AppMain
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[STAThread]
static void Main()
{
bool bCreatedNew = true;
using (new System.Threading.Mutex(true, "AppMutex", out bCreatedNew))
{
if (bCreatedNew)
{
TextWriterTraceListener traceListener = new TextWriterTraceListener(File.AppendText("./applog.txt"));
Trace.Listeners.Add(traceListener);
Trace.AutoFlush = true;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
else
{
Process currentProcess = Process.GetCurrentProcess();
foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName))
{
if (process.Id != currentProcess.Id)
{
if (SetForegroundWindow(process.MainWindowHandle) == false)
MessageBox.Show("Failed to set to foreground..", "Warming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
}
}
}
}
}
どのように私はこの問題を克服するだろうか?
Application.Run (またはメインへの入り口が何であれ)と呼ばれていますか? –
main()に更新されたコードがあります。 – user186246
アプリケーションをプロファイルすることができます。 –