Перейдите в каталог, где у вас есть исполняемый файл MySQL. -u
для имени пользователя и -p
для запроса пароля:
C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
Оба одинаково верны, но в документации для Control.Invoke
указано, что:
Делегат может быть экземпляром EventHandler, в этом случае отправитель параметр будет содержать этот элемент управления, а параметр события будет содержать EventArgs.Empty. Делегат также может быть экземпляром MethodInvoker, или любой другой делегат, который аннулирует список параметров. Звонок в EventHandler или MethodInvoker делегат будет быстрее, чем звонок другому тип делегата.
Так что MethodInvoker
будет более эффективным выбором.
Я предпочитаю использовать лямбды и действия / функции:
Control.BeginInvoke(new Action(() => MessageBox.Show("What a great post")));
Действие определяется в System, а MethodInvoker определяется в System.Windows.Forms - возможно, вам будет лучше использовать Action, поскольку он переносится в другие места. Вы также найдете больше мест, которые принимают Action в качестве параметра, чем MethodInvoker.
Однако в документации указано, что вызовы делегатов типа EventHandler или MethodInvoker в Control.Invoke () будут выполняться быстрее, чем любой другой тип.
Помимо названия, в котором они находятся, я не верю, что существует значимая функциональная разница между Action и MethodInvoker - они по существу оба определены как:
public delegate void NoParamMethod();
Кроме того, Action имеет несколько перегрузок, которые позволяют параметры, которые необходимо передать, и они являются общими, поэтому они могут быть типизированными.
Также согласно MSDN:
MethodInvoker предоставляет простой делегат, который используется для вызова метода с пустым списком параметров. Этот делегат можно использовать при вызове метода Invoke элемента управления или когда вам нужен простой делегат, но вы не хотите определять его самостоятельно.
Action , с другой стороны, может принимать до 4 параметров.
Но я не думаю, что есть какая-либо разница между MethodInvoker и Action ], поскольку они оба просто инкапсулируют делегат, который не принимает парметр и возвращает void
. Если вы посмотрите на их определения, вы просто увидите это.
public delegate void MethodInvoker();
public delegate void Action();
Кстати, вы также можете написать свою вторую строку как.
Control.BeginInvoke(new MethodInvoker(DoSomething), null);
Это вопрос предпочтения в большинстве случаев, если вы не собираетесь повторно использовать метод DoSomething (). Кроме того, анонимные функции помещают переменные с заданной областью в кучу, что может сделать эту функцию более дорогой.