Я вызываю уведомитель при выполнении sqlbulkcopy. На данный момент я печатаю только количество строк, которые записываются в БД. Я хотел бы напечатать другие аргументы, такие как имя БД, текущая временная метка и т. Д. Может кто-то, пожалуйста, дайте мне знать, как это сделать.Как передать больше аргументов Sqlbulkcopy notifyafter
0
A
ответ
0
Вы не можете привести аргументы в обработчик событий, но вы можете использовать делегат, который улавливает столько местной информации, как вам нравится:
using (var bulkCopy = new SqlBulkCopy(...)) {
string database = "myDatabase";
bulkCopy.SqlRowsCopied += (o, e) => {
Console.WriteLine(
"Time: {0}, database: {1}, rows copied: {2}",
DateTime.Now, database, e.RowsCopied
);
};
bulkCopy.WriteToServer(...);
}
Вы можете сделать это родовое, обернув его в способе и используя аргументы метода вместо локальных переменных. Вы также можете обернуть SqlBulkCopy
и создать собственное событие с настраиваемым EventArgs
, но для информации, которую вы добавляете, это, похоже, не стоит того.
Если вы имеете в виду SqlRowsCopiedEvent, нет никакой другой информации, которую аргументы события: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlrowscopiedeventargs(v=vs.110) .aspx – rene
Вы не можете передать больше данных обработчику событий. Вам придется обрабатывать событие внутри вашего класса/метода, а в нем создавать настраиваемое событие с необходимыми дополнительными деталями. – Rhumborl
В принципе, я бы назвал общий метод, который принимает имя файла, числовое значение, загружается, статус в качестве аргументов и обновляет общую таблицу, где мы отслеживаем количество строк, загружаемых в базу данных, и ее метку времени со статусом обработки ... SqlRowsCopied notifier принимает 2 аргументы один как объект другой как eventargument .. eventargument не может быть использован .. возможно ли передавать дополнительную информацию в качестве первого аргумента как объекта? – ABCDEFG