�t���[�Y���Ȃ��A�v���P�[�V�����̍����F���W�F.NET�J���҂̂��߂̔񓯊������i2/3 �y�[�W�j

» 2011�N09��30�� 00��00�� ���J
[��i�M�V�C��]

���񓯊�����t���[

�@�񓯊������̒��ɂ́A����t���[�icontrol flow�j��͒ʏ�̓����I�ȃR�[�h�ƕς��Ȃ����̂������B�t���[�`���[�g��V�[�P���X�}�������ƁA�} 5�Ɏ����悤�ɁA�����R�[�h�Ɠ����\���ɂȂ���̂��B

�} 5�@�񓯊�����t���[�ɂ�鉞�����̉��P

�@���̎�ނ̔񓯊������́A�X���b�h�E���\�[�X�̖��Ӗ��ȘQ����������ړI�Ŏg���B�X���b�h�Q��Ȃ��Ȃ邱�ƂŁA�Ⴆ�΁A�ȉ��̂悤�ȃ����b�g��������B

  • �N���C�A���gUI�F �������̉��P
  • ���Ԃ̂����鏈���ł��AUI�X���b�h�i���G���h�E���[�U�[����̓��͂��󂯕t���邽�߂̃X���b�h�j���~�߂��A�t���[�Y���������
  • �r�W�l�X�E���W�b�N�F ����f�[�^�擾
  • �����̃f�[�^�E�\�[�X����A�f�[�^�����Ɏ擾���邱�Ƃő҂����Ԃ����炷
  • �T�[�o�F �X�P�[���r���e�B����
  • 1���N�G�X�g�ɂ‚�1�X���b�h�g���K�v�����Ȃ����A��葽���̃��N�G�X�g�ɉ�������

�@���z�������ƁA����t���[�������Ȃ̂�����A�} 6�Ɏ����悤�ɁA���������Ɣ񓯊������œ����\���̃R�[�h�����������B

�} 6�@���������R�[�h�Ɠ����\���̔񓯊������R�[�h

�@�} 6�̔񓯊������̗�́AC#�̎����o�[�W�����œ���\��̔񓯊����\�b�h����сgawait�h�L�[���[�h���g���Ă���B�񓯊����\�b�h���g���΁A�����̏ꍇ�Ƃ܂�������������t���[�\���̃R�[�h�Ŕ񓯊�������������B

�@�����ł́A��Ɍ����C#�A���Ȃ킿�AC# 4.0�̏ꍇ�ɂ‚��āA�񓯊�����t���[�̏�������������Ă������B���̌�A�����o�[�W�����̔񓯊����\�b�h�ɂ‚��Ă��ȒP�ɐG���B

���T���v��

�@�Ⴆ�Έȉ��̂悤�Ȃ��̂��l���Ă݂悤�B

  • Web�œ����URL�ɃA�N�Z�X���邱�ƂŁA100�����ƒf�[�^���擾�ł���
  • �f�[�^�̖����ɁA�܂��f�[�^���c���Ă��邩�A�c���Ă���Ȃ�f�[�^�̑������擾���邽�߂�URL�������Ă���

�@��̓I�ɂ́AOData�����̌`���Ńf�[�^��Ԃ��B�����ł́ANuGet�M�������Ō��J����Ă����p�b�P�[�W�̈ꗗ���擾���Ă݂悤�B�} 7�ɁA�p�b�P�[�W�ꗗ���u���E�U�ł̎擾���ʂ̗�������B�����AtomPub�`����XML�f�[�^�ɂȂ��Ă��āA�} 8�Ɏ����悤�ɁA�����ɑ������擾���邽�߂�URL�������Ă���B

�} 7�@NuGet�M�������̃p�b�P�[�W�ꗗ��OData�Ŏ擾�i�ŏ��̐����j

�} 8�@�f�[�^�iOData AtomPub�`���j�̖����B�������擾���邽�߂�URL�������Ă���

����������t���[

�@���̏����𓯊��I�ȃR�[�h�ŏ����ƁA���X�g 3�̂悤�ɂȂ�B

public void LoadTitles()
{
  var wc = new WebClient();
  string url = startUrl;

  while (!string.IsNullOrEmpty(url))
  {
    var body = wc.DownloadString(url); // Web����f�[�^�擾
    var titles = ExtractTitles(body); // �f�[�^�̍\�����

    foreach (var title in titles)
    {
      _titles.Add(title);
    }

    url = GetNextUrl(body);
  }
}

���X�g 3�@��������t���[�̗�

�@�u_titles�v�͕\����̃��X�g�{�b�N�X�ɂЂ��t����R���N�V�����ŁA�uExtractTitles�v�ƁuGetNextUrl�v�͕ʓr��`���ꂽ���\�b�h�ł���B�����ŁAWeb����̃f�[�^�擾�̕����i���uDownloadString�v���\�b�h�j�͂��Ȃ�̎��Ԃ�v����B�܂��A����قǂł͂Ȃ��ɂ��Ă��A�f�[�^�̍\����́i���uExtractTitles�v���\�b�h�j������Ȃ�Ɏ��Ԃ�������B

�@���R�A���̂܂܎��s����ƁA�A�v���P�[�V�������t���[�Y���Ă��܂��i�f�[�^�ʂ�����Ȃ�ɑ������߁A�����̓t���[�Y����j�B���̂��߁ADownloadString���\�b�h��ExtractTitles���\�b�h��񓯊��Ɏ��s����K�v������B

�����[�v���܂܂Ȃ��񓯊�����t���[

�@�񓯊�����t���[���A���[�v���܂܂Ȃ��ꍇ�͂���قǓ���Ȃ��B�Ⴆ�Ώ�L�̗�ł����ƁA�f�[�^�擾��1�y�[�W�����ł����Ȃ�while���[�v�͕s�v���B

�@���̏ꍇ�ATask�N���X���g����Ȃ�R�[�h�̋L�q�͂܂��������y�ŁA���X�g 4�̂悤�ɂȂ�B�������AWebClient�N���X�ɑ΂��āA���X�g 5�̂悤�Ȋg�����\�b�h���`���Ă���B

public void Load1PageAsync()
{
  var wc = new WebClient();

  wc.DownloadStringTaskAsync(startUrl) // �񓯊���DownloadString
    .ContinueWith(t => ExtractTitles(t.Result)) // �񓯊���ExtractTitles
    .ContinueWith(t =>
    {
      foreach (var title in t.Result.Distinct())
      {
        _titles.Add(title);
      }
    }, TaskScheduler.FromCurrentSynchronizationContext());
}

���X�g 4�@���[�v���܂܂Ȃ��񓯊�����t���[�̗�

public static Task<string> DownloadStringTaskAsync(this WebClient c, string uri)
{
  var tcs = new TaskCompletionSource<string>();

  DownloadStringCompletedEventHandler handler = null;
     
  handler = (sender, e) =>
  {
    if (e.Cancelled) tcs.TrySetCanceled();
    else if (e.Error != null) tcs.TrySetException(e.Error);
    else tcs.TrySetResult(e.Result);
    c.DownloadStringCompleted -= handler;
  };
 
  c.DownloadStringCompleted += handler;
  c.DownloadStringAsync(new Uri(uri));
 
  return tcs.Task;
}

���X�g 5�@WebClient��DownloadStringAsync���\�b�h��Task�N���X���b�v����g�����\�b�h

�@���̓����ł̃R�[�h�Ƃ����Ԃ�ς���Ă��܂������A�菇�ǂ���ɏォ�珈��������ł��邾���ATask�N���X�o��ȑO�Ɣ�ׂ�΂܂�������₷���Ȃ��Ă���B

�����[�v���܂ޔ񓯊�����t���[�iC# 4.0�j

�@���́A���[�v�����������܂ސ���t���[�̏ꍇ���B�O�߂̂悤�ȁAContinueWith���\�b�h���‚Ȃ��ł������������ł��Ȃ��Ȃ�B�����œo�ꂷ��̂��A�����o�[�W������C#�œ��������񓯊����\�b�h�ł���B

�@���������̑O�ɁA�����C# 4.0�ł̉�����I�ȕ��@���Љ�Ă������B���X�g 6�Ɏ����悤�ɁA�C�e���[�^�\���iyield return�j���g���Ĕ񓯊�����t���[��������@������B

public Task LoadTitlesAsyncPattern()
{
  return StartAsyncMethod(LoadTitlesIterator());
}
 
public IEnumerator<Task> LoadTitlesIterator()
{
  var wc = new WebClient();
  string url = startUrl;
 
  while (!string.IsNullOrEmpty(url))
  {
    var tBody = wc.DownloadStringTaskAsync(url);
    if (!tBody.IsCompleted)
      yield return tBody;
    var body = tBody.Result;
 
    var tTitles = Task.Factory.StartNew(() => ExtractTitles(body));
    if (!tTitles.IsCompleted)
      yield return tTitles;
    var titles = tTitles.Result;
     �c�c�㗪�c�c // �c��͓��������Ɠ���
  }
}
 
private static Task StartAsyncMethod(IEnumerator<Task> e)
{
  Action a = null;
  var tcs = new TaskCompletionSource<object>();
  var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
 
  a = () =>
  {
    if (e.MoveNext())
    {
      var t = e.Current;
      t.ContinueWith(_ => a(), scheduler);
    }
    else tcs.TrySetResult(null);
  };
  a();
 
  return tcs.Task;
}

���X�g 6�@�C�e���[�^���g�����񓯊�����t���[

�@�����Łi���X�g 3�j��LoadTitles���\�b�h�ƁA�񓯊��Łi���X�g 6�j��LoadTitlesIterator���\�b�h�̈Ⴂ�́A��^�I�Ȓu�������݂̂ŁA�} 9�Ɏ����Ƃ���ł���B

�} 9�@������������C�e���[�^���g�����񓯊������ւ̒u������

�����[�v���܂ޔ񓯊�����t���[�iC#�����o�[�W�����j

�@�} 9�̂悤�Ȓu�������͊��S�ɋ@�B�I�ɍs������̂ŁA�����C#�^VB�R���p�C���ɂ�点�Ă��܂����Ƃ����̂��A�����o�[�W�����œ��������񓯊����\�b�h�ł���B���X�g 7�Ɏ����悤�ɁA���\�b�h��async�C���q�A�񓯊������̎�O��await�L�[���[�h��t���邾���ŁA�񓯊�����t���[��������悤�ɂȂ�B

public async Task LoadTitlesAsync()
{
  var wc = new WebClient();
  string url = startUrl;
 
  while (!string.IsNullOrEmpty(url))
  {
    var body = await wc.DownloadStringTaskAsync(url);
    var titles = await Task.Factory.StartNew(() => ExtractTitles(body));

     �c�c�㗪�c�c // �c��͓��������Ɠ���
  }
}

���X�g 7�@�񓯊����\�b�h���g���Ĕ񓯊�����t���[�̗�

�@����ŁA�����u���z�������Ɓv�Ɛ��������悤�ȁA�u�����Ɣ񓯊��ŁA��������t���[�𓯂��悤�ȃR�[�h�ŏ����v�������ł���悤�ɂȂ�B

�@�Ō�Ɏ��̃y�[�W�ŁA�񓯊��f�[�^�t���[���������B

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