WPF�F��O���܂Ƃ߂ăg���b�v����ɂ́H�mC#�^VB�n�F.NET TIPS

��O��1�J���ł܂Ƃ߂ď����������Ȃ邱�Ƃ��悭����B������s���l�‚̕��@��{�e�ł͏Љ��B

» 2015�N12��16�� 05��00�� ���J
[�R�{�N�F�CBluewaterSoft�^Microsoft MVP for Windows Development]
.NET TIPS
Insider.NET

�@

u.NET TIPSṽCfbNX

�A�ږڎ�

�ΏہF.NET 4.0�ȍ~


�@��O�������܂Ƃ߂�1�J���ɋL�q�ł�����悢�̂ɂƎv�������Ƃ͂Ȃ����낤���H �Ⴆ�΁A����������O��S�ă��O�ɏ����o�������Ƃ��ł���B�ߋ��ɕM�҂́A�utry�`catch���ă��M���O����R�[�h��S�Ẵ��\�b�h�ɏ����v�Ƃ����R�[�f�B���O���[���ɑ����������Ƃ�����B����Ȗʓ|�Ȃ��Ƃ����Ȃ���΂Ȃ�Ȃ��̂��낤���H �܂��A�Ⴆ�΁A��������Ȃ�������O���܂Ƃ߂ăg���b�v���A�”\�Ȃ�΂��̗�O�𖳎����ăv���O�����̎��s���p���������A�p���������Ȃ�΃��[�U�[�t�����h���[�ȃ��b�Z�[�W���o���Ă���v���O�������I���������A�Ƃ������Ƃ����邾�낤�B

�@��������Ȃ�������O���܂Ƃ߂ăg���b�v������@�ɂ‚��āA.NET 2.0�^Windows�t�H�[���̏ꍇ�́u.NET TIPS�F�K�؂ɏ�������Ȃ�������O���L���b�`����ɂ́H�v�������������������B

�@�{�e�ł́A.NET 4.0�ȍ~�̐V�@�\���g����WPF�ŗ�O���܂Ƃ߂ăg���b�v������@�𐮗����ďЉ��B�Ȃ��AUI�X���b�h�Ŕ��������O�̘b�������āA�R���\�[���v���O������Web�A�v���P�[�V�����Ȃǂł����l�ł���B

�@�܂��A�{�e�̃T���v���́uWindows desktop code samples�F.NET Tips #1122�v����_�E�����[�h�ł���B���̉摜�́A���̎��s��ł���B

ʓrJ̃TvsĂlqiWindows 10ł̎sj �ʓr���J�̃T���v�������s���Ă���l�q�iWindows 10�ł̎��s�j
���̃T���v�����r���h����́AVisual Studio 2012�ȍ~���K�v�ł���B

���O�����F�o�b�N�O���E���h�^�X�N�Ŕ���������O���g���b�v�”\�ɂ���ɂ́H

�@�{��ɓ���O�ɁA.NET 4.5�ł̎d�l�ύX�̘b�����Ă����Ȃ��Ă͂Ȃ�Ȃ��B

�@�񓯊������̋L�q�́A.NET 4.0�œ������ꂽ�^�X�N���񃉃C�u�����iTPL�j�̗��p�������ʓI�ɂȂ��Ă����i�u.NET TIPS�FWPF�^Windows�t�H�[���F���Ԃ̂����鏈�����o�b�N�O���E���h�Ŏ��s����ɂ́H�iasync�^await�ҁj�v�j�B�Ƃ��낪�A���̗�O�����Ɋւ��ẮA.NET 4.5�ő傫�Ȏd�l�ύX���������̂��B

�@�o�b�N�O���E���h�^�X�N�̊�����ҋ@����iawait�L�[���[�h��System.Threading.Tasks���O��Ԃ�Task�N���X��Wait���\�b�h���g���j�ꍇ�ɂ́A�o�b�N�O���E���h�^�X�N�Ŕ���������O���Ăяo�����̃X���b�h�ɑ�����B����ɂ͕ύX���Ȃ��B

�@�o�b�N�O���E���h�^�X�N�̊�����ҋ@���Ȃ��ꍇ�ɂ́A���̂悤�Ɏd�l���ς���Ă���B

  • .NET 4.0�F �g���b�v����Ȃ������ꍇ�́A�v���O�������I������
  • .NET 4.5�F �g���b�v����Ȃ������ꍇ�́A���̗�O�͎�����i����l�j

�@����.NET 4.5�̓���́A.NET 4.0�Ɠ������������悤�ɕύX�ł���B�{�e�ł́A.NET 4.0�Ɠ�������ɕύX���Ă����B����ɂ͊‹��ϐ��⃌�W�X�g����ݒ肷����@�����邪�A�����ł͓���‹��ɂ�炸�A�v�����Ƃɐݒ肷����@��p����B.NET 4.5�̃v���W�F�N�g�̏ꍇ�́AApp.config�t�@�C����ThrowUnobservedTaskExceptions��true�ɐݒ肵�Ă����Ă��炢�����i���̃R�[�h�j�B

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  �c�c�ȗ��i�����̋L�q�j�c�c

  <runtime>
    <ThrowUnobservedTaskExceptions enabled="true"/>
  </runtime>
</configuration>

�o�b�N�O���E���h�^�X�N�Ŕ���������O��K���󂯎���悤�ɂ���ݒ�i.NET 4.5�j
.NET 4.5�̃v���W�F�N�g�ł́A����App.config�t�@�C���ɑ����̕�����lj�����B
����ɂ��A.NET 4.0�Ɠ�������ɂȂ�B���Ȃ킿�A�o�b�N�O���E���h�^�X�N�Ŕ���������O���������Ȃ������ꍇ�Ƀv���O�������I������悤�ɂȂ�B

��O�����������u�Ԃɂ܂Ƃ߂ăg���b�v����ɂ́H

�@AppDomain�N���X�iSystem���O��ԁj��FirstChanceException�C�x���g���g���΂悢�B

�@�����.NET 4.0�̐V�@�\�ł���Btry�`catch�\���ŗ�O���L���b�`���������O�ɁA��O�����������Ƃ����ʒm���󂯎���̂��B�������A���̗�O���������邱�Ƃ͂ł��Ȃ��B�܂��A�}�l�[�W�R�[�h�Ŕ���������O�݂̂ł���B���������S�Ă̗�O�����M���O����Ƃ������p�r�ɗ��p�ł���i�c��ȗʂɂȂ�̂ŊJ�����Ɍ��肵�������悢�j�B

�@����FirstChanceException�C�x���g���g���ă��b�Z�[�W�{�b�N�X���o���R�[�h��͎��̂悤�ɂȂ�B

public partial class App : Application
{
  public App()
  {
    // �}�l�[�W�R�[�h���ŗ�O���X���[�����ƍŏ��ɕK����������i.NET 4.0���j
    AppDomain.CurrentDomain.FirstChanceException
      += CurrentDomain_FirstChanceException;
  }

  private void CurrentDomain_FirstChanceException(
                  object sender, 
                  System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
  {
    string errorMember =  e.Exception.TargetSite.Name;
    string errorMessage = e.Exception.Message;
    string message = string.Format(
@"��O��{0}�Ŕ����B�v���O�����͌p�����܂��B
�G���[���b�Z�[�W�F{1}"
                              errorMember, errorMessage);
    MessageBox.Show(message, "FirstChanceException",
                    MessageBoxButton.OK,MessageBoxImage.Information);
  }
}

Class Application
  Public Sub New()
    ' �}�l�[�W�R�[�h���ŗ�O���X���[�����ƍŏ��ɕK����������i.NET 4.0���j
    AddHandler AppDomain.CurrentDomain.FirstChanceException,
      AddressOf CurrentDomain_FirstChanceException
  End Sub

  Private Sub CurrentDomain_FirstChanceException(
                sender As Object,
                e As Runtime.ExceptionServices.FirstChanceExceptionEventArgs)

    Dim errorMember As String = e.Exception.TargetSite.Name
    Dim errorMessage As String = e.Exception.Message
    Dim message As String = String.Format(
"��O��{0}�Ŕ����B�v���O�����͌p�����܂��B" + vbCrLf _
+ "�G���[���b�Z�[�W�F{1}",
                              errorMember, errorMessage)
    MessageBox.Show(message, "FirstChanceException",
                    MessageBoxButton.OK, MessageBoxImage.Information)
  End Sub
End Class

FirstChanceException�C�x���g���g���R�[�h��i��FC#�A���FVB�j
�{�e�ł́A������Visual Studio Express 2012 for Windows Desktop���g�p���Ă���B
WPF�̃v���W�F�N�g���쐬���AApp.xaml.cs�t�@�C����App�N���X�iVB�ł́AApplication.xaml.vb�t�@�C����Application�N���X�j�����̂悤�ɕҏW����B

WPF��UI�X���b�h�Ŕ���������������O���܂Ƃ߂ăn���h�����O����ɂ́H

�@Application�N���X�iSystem.Windows���O��ԁj��DispatcherUnhandledException�C�x���g���g���΂悢�B

�@�����WPF�o�ꎞ����̋@�\�ł���BWindows�t�H�[����Application�N���X�iSystem.Windows.Forms���O��ԁj��ThreadException�C�x���g�ɑ���������̂��BUI�X���b�h�Ŕ���������O����������Ȃ������ꍇ�ɁA���̃C�x���g����������B

�@DispatcherUnhandledException�C�x���g�̃n���h���[���\�b�h�ł́A��O�������ς݂ɂ��邱�Ƃ��ł���itry�`catch�u���b�N�ŗ�O���L���b�`���ă��X���[���Ȃ����Ƃɑ����j�B����ɂ́A������DispatcherUnhandledExceptionEventArgs�I�u�W�F�N�g�iSystem.Windows.Threading���O��ԁj��Handled�v���p�e�B��true��ݒ肷��B

�@����DispatcherUnhandledException�C�x���g���g���ă��b�Z�[�W�{�b�N�X���o���R�[�h��͎��̂悤�ɂȂ�B�����ł́A���b�Z�[�W�{�b�N�X�Łm�͂��n�{�^�����N���b�N����Ɨ�O�������ς݂ɂ��ăv���O�������p������悤�ɂ��Ă���B

public partial class App : Application
{
  public App()
  {
    // UI�X���b�h�Ŏ��s����Ă���R�[�h�ŏ�������Ȃ������甭������i.NET 3.0���j
    this.DispatcherUnhandledException += App_DispatcherUnhandledException;
  }

  private void App_DispatcherUnhandledException(
                  object sender, 
                  System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
  {
    string errorMember = e.Exception.TargetSite.Name;
    string errorMessage = e.Exception.Message;
    string message = string.Format(
@"��O��{0}�Ŕ����B�v���O�������p�����܂����H
�G���[���b�Z�[�W�F{1}",
                              errorMember, errorMessage);
    MessageBoxResult result
      = MessageBox.Show(message, "DispatcherUnhandledException",
                        MessageBoxButton.YesNo, MessageBoxImage.Warning);
    if(result == MessageBoxResult.Yes)
      e.Handled = true;
  }
}

Class Application
  Public Sub New()
    ' UI�X���b�h�Ŏ��s����Ă���R�[�h�ŏ�������Ȃ������甭������i.NET 3.0���j
    AddHandler Me.DispatcherUnhandledException,
      AddressOf App_DispatcherUnhandledException
  End Sub

  Private Sub App_DispatcherUnhandledException(
              sender As Object,
              e As System.Windows.Threading.DispatcherUnhandledExceptionEventArgs)

    Dim errorMember As String = e.Exception.TargetSite.Name
    Dim errorMessage As String = e.Exception.Message
    Dim message As String = String.Format(
"��O��{0}�Ŕ����B�v���O�������p�����܂����H" + vbCrLf _
+ "�G���[���b�Z�[�W�F{1}",
                              errorMember, errorMessage)
    Dim result As MessageBoxResult _
      = MessageBox.Show(message, "DispatcherUnhandledException",
                          MessageBoxButton.YesNo, MessageBoxImage.Warning)
    If (result = MessageBoxResult.Yes) Then
      e.Handled = True
    End If
  End Sub
End Class

DispatcherUnhandledException�C�x���g���g���R�[�h��i��FC#�A���FVB�j
WPF�̃v���W�F�N�g�ŁAApp.xaml.cs�t�@�C����App�N���X�iVB�ł́AApplication.xaml.vb�t�@�C����Application�N���X�j�����̂悤�ɕҏW����B

�o�b�N�O���E���h�^�X�N�Ŕ���������������O���܂Ƃ߂ăn���h�����O����ɂ́H

�@TaskScheduler�N���X�iSystem.Threading.Tasks���O��ԁj��UnobservedTaskException�C�x���g���g���΂悢�B

�@�����.NET 4.0�̐V�@�\�ł���B�o�b�N�O���E���h�^�X�N�Ŕ���������O����������Ȃ������ꍇ�ɁA���̃C�x���g�n���h���[�ŗ�O�������ł���i.NET 4.5�ł��O�q�����ݒ�Ɋ֌W�Ȃ������ł���B�O�q�����ݒ�́A���̃C�x���g�n���h���[�ŗ�O�������ς݂Ƃ��Ȃ������ꍇ�Ƀv���O�������I�����邩�ǂ����Ƃ����Ⴂ�ɂȂ�j�B�������A���̃C�x���g���Ăяo�����̂́A�o�b�N�O���E���h�^�X�N�̃C���X�^���X���j�������Ƃ��ł���B�ʏ�̓V�X�e���̃K�x�[�W�R���N�^�ɔj����C���Ă��邽�߁A�Ăяo�����^�C�~���O�͕s��ł���B�A�v���P�[�V�������̂���ɏI�����Ă��܂��A�C�x���g�n���h���[���Ăяo����Ȃ��܂܂ɂȂ�”\��������̂Œ��ӂ��Ăق����B

�@UnobservedTaskException�C�x���g�̃n���h���[���\�b�h�ł́A��O�������ς݂Ƃ��邱�Ƃ��ł���B����ɂ́A������UnobservedTaskExceptionEventArgs�I�u�W�F�N�g�iSystem.Threading.Tasks���O��ԁj��SetObserved���\�b�h���Ăяo���΂悢�B

�@����UnobservedTaskException�C�x���g���g���ă��b�Z�[�W�{�b�N�X���o���R�[�h��͎��̂悤�ɂȂ�B�����ł́A���b�Z�[�W�{�b�N�X�Łm�͂��n�{�^�����N���b�N����Ɨ�O�������ς݂ɂ��ăv���O�������p������悤�ɂ��Ă���B

public partial class App : Application
{
  public App()
  {
    // �o�b�N�O���E���h�^�X�N���ŏ�������Ȃ������甭������i.NET 4.0���j
    TaskScheduler.UnobservedTaskException
      += TaskScheduler_UnobservedTaskException;
  }

  private void TaskScheduler_UnobservedTaskException(
                  object sender,
                  UnobservedTaskExceptionEventArgs e)
  {
    string errorMember = e.Exception.InnerException.TargetSite.Name;
    string errorMessage = e.Exception.InnerException.Message;
    string message = string.Format(
@"��O���o�b�N�O���E���h�^�X�N��{0}�Ŕ����B�v���O�������p�����܂����H
�G���[���b�Z�[�W�F{1}",
                        errorMember, errorMessage);
    MessageBoxResult result
      = MessageBox.Show(message, "UnobservedTaskException",
                        MessageBoxButton.YesNo, MessageBoxImage.Warning);
    if (result == MessageBoxResult.Yes)
      e.SetObserved();
  }
}

Class Application
  Public Sub New()
    ' �o�b�N�O���E���h�^�X�N���ŏ�������Ȃ������甭������i.NET 4.0���j
    AddHandler TaskScheduler.UnobservedTaskException,
      AddressOf TaskScheduler_UnobservedTaskException
  End Sub

  Private Sub TaskScheduler_UnobservedTaskException(
                sender As Object,
                e As UnobservedTaskExceptionEventArgs)

    Dim errorMember As String = e.Exception.InnerException.TargetSite.Name
    Dim errorMessage As String = e.Exception.InnerException.Message
    Dim message As String = String.Format(
"��O���o�b�N�O���E���h�^�X�N��{0}�Ŕ����B�v���O�������p�����܂����H" + vbCrLf _
+ "�G���[���b�Z�[�W�F{1}",
                        errorMember, errorMessage)
    Dim result As MessageBoxResult _
      = MessageBox.Show(message, "UnobservedTaskException",
                          MessageBoxButton.YesNo, MessageBoxImage.Warning)
    If (result = MessageBoxResult.Yes) Then
      e.SetObserved()
    End If
  End Sub
End Class

UnobservedTaskException�C�x���g���g���R�[�h��i��FC#�A���FVB�j
WPF�̃v���W�F�N�g�ŁAApp.xaml.cs�t�@�C����App�N���X�iVB�ł́AApplication.xaml.vb�t�@�C����Application�N���X�j�����̂悤�ɕҏW����B

�S�Ă̖�������O���Ō�ɂ܂Ƃ߂ăg���b�v����ɂ́H

�@AppDomain�N���X��UnhandledException�C�x���g���g���΂悢�B

�@����́A.NET Framework�ɍŏ����炠��@�\���B��������Ȃ�������O������ꍇ�ɁA�{�e�ŏЉ���l�‚̃C�x���g�̒��ŁA�Ō�ɒʒm�����B�������AFirstChanceException�Ɠ��l�ɁA���̗�O���������邱�Ƃ͂ł��Ȃ��B�قƂ�ǂ̏ꍇ�A���̃C�x���g�n���h���[���甲�������_�Ńv���O�����͏I�����Ă��܂��B

�@����UnhandledException�C�x���g���g���ă��b�Z�[�W�{�b�N�X���o���R�[�h��͎��̂悤�ɂȂ�B

public partial class App : Application
{
  public App()
  {
    // ��O����������Ȃ������甭������i.NET 1.0���j
    AppDomain.CurrentDomain.UnhandledException
      += CurrentDomain_UnhandledException;
  }

  private void CurrentDomain_UnhandledException(
                  object sender,
                  UnhandledExceptionEventArgs e)
  {
    var exception = e.ExceptionObject as Exception;
    if (exception == null)
    {
      MessageBox.Show("System.Exception�Ƃ��Ĉ����Ȃ���O");
      return;
    }

    string errorMember =  exception.TargetSite.Name;
    string errorMessage = exception.Message;
    string message = string.Format(
@"��O��{0}�Ŕ����B�v���O�����͏I�����܂��B
�G���[���b�Z�[�W�F{1}",
                                errorMember, errorMessage);
    MessageBox.Show(message, "UnhandledException",
                    MessageBoxButton.OK, MessageBoxImage.Stop);
    Environment.Exit(0);
  }
}

Class Application
  Public Sub New()
    ' ��O����������Ȃ������甭������i.NET 1.0���j
    AddHandler AppDomain.CurrentDomain.UnhandledException,
      AddressOf CurrentDomain_UnhandledException
  End Sub

  Private Sub CurrentDomain_UnhandledException(
                sender As Object,
                e As UnhandledExceptionEventArgs)

    Dim exception = TryCast(e.ExceptionObject, Exception)
    If (exception Is Nothing) Then
      MessageBox.Show("System.Exception�Ƃ��Ĉ����Ȃ���O")
      Return
    End If

    Dim errorMember As String = exception.TargetSite.Name
    Dim errorMessage As String = exception.Message
    Dim message As String = String.Format(
"��O��{0}�Ŕ����B�v���O�����͏I�����܂��B" + vbCrLf _
+ "�G���[���b�Z�[�W�F{1}",
                                errorMember, errorMessage)
    MessageBox.Show(message, "UnhandledException",
                    MessageBoxButton.OK, MessageBoxImage.Stop)
    Environment.Exit(0)
  End Sub
End Class

UnhandledException�C�x���g���g���R�[�h��i��FC#�A���FVB�j
WPF�̃v���W�F�N�g�ŁAApp.xaml.cs�t�@�C����App�N���X�iVB�ł́AApplication.xaml.vb�t�@�C����Application�N���X�j�����̂悤�ɕҏW����B

�܂Ƃ�

�@��O���܂Ƃ߂Ĉ�����i��.NET 4.0�Œlj�����Ă���B�{�e�ł͎l�‚̕��@���Љ���B

�@��O�����O�ɏ������ނɂ́A��O��������FirstChanceException�C�x���g���A�A�v���P�[�V�����I�����O��UnhandledException�C�x���g���K���Ă���i���̓�‚͗�O������m�邱�Ƃ��ł��邾���ŁA��O�������ς݂ɂ��邱�Ƃ͂ł��Ȃ��j�B

�@��������O���g���b�v������Ń��J�o�����������݂āA���ꂪ���������Ƃ��Ƀv���O�������p��������ɂ�DispatcherUnhandledException�C�x���g��UnobservedTaskException�C�x���g�����p�ł���B

���p�”\�o�[�W�����F.NET Framework 4.0�ȍ~
�J�e�S���FWPF�@�����ΏہF��O
�g�p���C�u�����FAppDomain�N���X�iSystem���O��ԁj
�g�p���C�u�����FApplication�N���X�iSystem.Windows���O��ԁj
�g�p���C�u�����FTaskScheduler�N���X�iSystem.Threading.Tasks���O��ԁj
�֘ATIPS�F�K�؂ɏ�������Ȃ�������O���L���b�`����ɂ́H
�֘ATIPS�FWPF�^Windows�t�H�[���F���Ԃ̂����鏈�����o�b�N�O���E���h�Ŏ��s����ɂ́H


u.NET TIPSṽCfbNX

�u.NET TIPS�v

Copyright© Digital Advantage Corp. All Rights Reserved.

'; if( !this.isSubscription ) { this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); } }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B