我想使用狀態方法,但我不明白它是如何工作的。有人可以給我看一個例子嗎?在c#中使用client.status與sharpsvn
EventHandler <SvnStatusEventArgs> statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
我想使用狀態方法,但我不明白它是如何工作的。有人可以給我看一個例子嗎?在c#中使用client.status與sharpsvn
EventHandler <SvnStatusEventArgs> statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
那麼,它會工作酷似svn status
命令:http://svnbook.red-bean.com/en/1.0/re26.html
你會得到抽到事件處理程序的文件列表:
using(SvnClient client = /* set up a client */){
EventHandler<SvnStatusEventArgs> statusHandler = new EventHandler<SvnStatusEventArgs>(HandleStatusEvent);
client.Status(@"c:\foo\some-working-copy", statusHandler);
}
...
void HandleStatusEvent (object sender, SvnStatusEventArgs args)
{
switch(args.LocalContentStatus){
case SvnStatus.Added: // Handle appropriately
break;
}
// review other properties of 'args'
}
或者,如果你不這樣做介意內聯代表:
using(SvnClient client = new SvnClient())
{
client.Status(path,
delegate(object sender, SvnStatusEventArgs e)
{
if (e.LocalContentStatus == SvnStatus.Added)
Console.WriteLine("Added {0}", e.FullPath);
});
}
請注意,委託版本SharpSvn函數始終比修訂返回集合的速度快(微小),因爲此方法允許將最少量的信息編組到管理的世界中。無論如何,您可以使用Svn * EventArgs.Detach()來收集所有內容。 (這是.GetXXX()函數在內部執行的操作)
內聯委託版本適用於我,但EventHandler<T>
版本不起作用,直到將類型設置爲EventHandler<SvnStatusEventArgs>
。
非常感謝你,它的工作原理,你是最好的。謝謝! – Pedro