سؤال

أريد استخدام طريقة الحالة لكنني لا أفهم كيف يعمل. هل يمكن لشخص أن يرني لي مثالا على الاستخدام من فضلك؟

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.

ستحصل على قائمة الملفات التي يتم ضخها إلى EventHandler:

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>.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top