P4API. net: как использовать делегаты P4Callbacks - PullRequest
0 голосов
/ 13 марта 2020

Я работаю над небольшим инструментом для планирования p4 syn c ежедневно в определенные c раз. В этом инструменте я хочу отобразить выходные данные из P4API, когда он выполняет команды.

Я вижу, что P4API. net имеет класс P4Callbacks с несколькими делегатами: InfoResultsDelegate, TaggedOutputDelegate, LogMessageDelegate, ErrorDelegate.

Мой вопрос: как я могу их использовать, я не смог найти ни одного примера в Интернете. Короткий пример кода был бы потрясающим!

Примечание: я довольно новичок и никогда раньше не использовал делегатов.

1 Ответ

0 голосов
/ 10 апреля 2020

Отвечая на мои вопросы на примере. Я сам понял, что это простое событие.

Обратите внимание, что это работает только с P4Server. Моя последняя попытка получить TaggedOutput из P4.Connection была неудачной, они никогда не запускались при выполнении команды.

Итак, вот пример кода:

P4Server p4Server = new P4Server(syncPath);
p4Server.TaggedOutputReceived += P4ServerTaggedOutputEvent;
p4Server.ErrorReceived += P4ServerErrorReceived;    
bool syncSuccess = false;
try
{
    P4Command syncCommand = new P4Command(p4Server, "sync", true, syncPath + "\\...");
    P4CommandResult rslt = syncCommand.Run();
    syncSuccess=true;
    //Here you can read the content of the P4CommandResult
    //But it will only be accessible when the command is finished.
}
catch (P4Exception ex) //Will be caught only when the command has completely failed
{
    Console.WriteLine("P4Command failed: " + ex.Message);
}

И два метода они будут сработать во время выполнения команды syn c.

private void P4ServerErrorReceived(uint cmdId, int severity, int errorNumber, string data)
{
    Console.WriteLine("P4ServerErrorReceived:" + data);
}

private void P4ServerTaggedOutputEvent(uint cmdId, int ObjId, TaggedObject Obj)
{
    Console.WriteLine("P4ServerTaggedOutputEvent:" + Obj["clientFile"]);
}
...