none
TFS 2010 API:如何在发起一个构建(build)后等待build 结束再返回? RRS feed

  • 问题

  • 现在我们可以利用下面的代码发起一个构建,但是发起之后程序就返回了。

                      buildServer.QueueBuild(buildRequest);

    我想实现等到构建结束再返回,请问如何实现?
    2012年2月24日 6:44

答案

  • Hi laofo,

    buildServer.QueueBuild(buildRequest) 方法只是将build放到队列当中去,它并不会保证你的Build 会queued 结束。对于你的情况,我想你可以考虑创建一个Web Service或者是WCF service去监听BuildCompletionEvent2事件。如果这个事件被触发了,你在继续进行你之后的工作。


    Vicky Song [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月28日 7:53
    版主
  • IQueuedBuild build = BuildServer.QueueBuild(request);

    int maxWaitSec = ...;

    while ((build.Status != QueueStatus.Completed || build.Status != QueueStatus.Canceled) && maxWaitSec >0)

    {

    Thread.Sleep(1000);

    maxWaitSec--;

    build.Refresh(QueryOptions.All);

    }

    if (maxWaitSec == 0)

    {

    Throw new Exception("等待Build结束超时!");

    }

    return ...;

    - Qianyang



    2012年2月29日 6:21

全部回复

  • Hi laofo,

    buildServer.QueueBuild(buildRequest) 方法只是将build放到队列当中去,它并不会保证你的Build 会queued 结束。对于你的情况,我想你可以考虑创建一个Web Service或者是WCF service去监听BuildCompletionEvent2事件。如果这个事件被触发了,你在继续进行你之后的工作。


    Vicky Song [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月28日 7:53
    版主
  • IQueuedBuild build = BuildServer.QueueBuild(request);

    int maxWaitSec = ...;

    while ((build.Status != QueueStatus.Completed || build.Status != QueueStatus.Canceled) && maxWaitSec >0)

    {

    Thread.Sleep(1000);

    maxWaitSec--;

    build.Refresh(QueryOptions.All);

    }

    if (maxWaitSec == 0)

    {

    Throw new Exception("等待Build结束超时!");

    }

    return ...;

    - Qianyang



    2012年2月29日 6:21