2010-03-15 21 views
4

我想使用狀態方法,但我不明白它是如何工作的。有人可以給我看一個例子嗎?在c#中使用client.status與sharpsvn

EventHandler <SvnStatusEventArgs> statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target); 
client.Status(path, statusHandler); 

回答

3

那麼,它會工作酷似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' 
} 
+0

非常感謝你,它的工作原理,你是最好的。謝謝! – Pedro

3

或者,如果你不這樣做介意內聯代表:

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()函數在內部執行的操作)

1

內聯委託版本適用於我,但EventHandler<T>版本不起作用,直到將類型設置爲EventHandler<SvnStatusEventArgs>