private SvnInfoEventArgs GetRepositoryInfo()
{
SvnInfoEventArgs info = null;
Exception exception = null;
var repositoryUri = new Uri(_settings.Uri).AbsoluteUri;
var thread = new Thread(() =>
{
try
{
info = GetRepositoryInfo(repositoryUri);
}
catch (Exception ex)
{
exception = ex;
}
});
thread.Start();
var timeoutAcquired = !thread.Join(TimeSpan.FromSeconds(Timeout));
if (timeoutAcquired)
{
thread.Abort();
}
if (!timeoutAcquired && exception != null)
{
throw exception;
}
if (timeoutAcquired)
{
throw new SvnException(string.Format("Timeout while connecting to svn repository {0}", _settings.Uri));
}
return info;
}