Шаблон проекта Silverlight по умолчанию создает файл под названием "App.xaml". Для чего используется этот файл?
Вставка нескольких значений с подготовленными инструкциями PDO
Вставка нескольких значений в одну инструкцию execute. Почему, потому что согласно эта страница быстрее, чем обычные вставки.
$datafields = array('fielda', 'fieldb', ... );
$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);
$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);
больше значений данных, или у вас, вероятно, есть цикл, который заполняет данные.
С подготовленными вставками вам нужно знать поля, в которые вы вставляете, и количество полей для создания? местозаполнители для привязки параметров.
insert into table (fielda, fieldb, ... ) values (?,?...), (?,?...)....
В основном так мы хотим, чтобы оператор insert выглядел.
Код:
function placeholders($text, $count=0, $separator=","){
$result = array();
if($count > 0){
for($x=0; $x<$count; $x++){
$result[] = $text;
}
}
return implode($separator, $result);
}
$pdo->beginTransaction(); // also helps speed up your inserts.
$insert_values = array();
foreach($data as $d){
$question_marks[] = '(' . placeholders('?', sizeof($d)) . ')';
$insert_values = array_merge($insert_values, array_values($d));
}
$sql = "INSERT INTO table (" . implode(",", $datafields ) . ") VALUES " .
implode(',', $question_marks);
$stmt = $pdo->prepare ($sql);
try {
$stmt->execute($insert_values);
} catch (PDOException $e){
echo $e->getMessage();
}
$pdo->commit();
Хотя в моем тесте была разница всего в 1 секунду при использовании нескольких вставок и обычных подготовленных вставок с одним значением.
-121--3472984-Если вы уже отменили один таймер, вы не можете повторно запустить его, вам придется создать новый.
Смотрите этот ответ , он содержит видео и исходный код, как я сделал нечто подобное.
В основном существует два метода: пауза
и возобновление
В паузе:
public void pause() {
this.timer.cancel();
}
В резюме:
public void resume() {
this.timer = new Timer();
this.timer.schedule( aTask, 0, 1000 );
}
Это делает восприятие паузы/возобновления.
Если таймеры выполняют различные действия в зависимости от состояния приложения, можно использовать параметр StatePattern
Определить абстрактное состояние:
abstract class TaskState {
public void run();
public TaskState next();
}
И предоставить любое количество состояний. Ключ в том, что одно состояние ведет тебя в другое.
class InitialState extends TaskState {
public void run() {
System.out.println( "starting...");
}
public TaskState next() {
return new FinalState();
}
}
class FinalState extends TaskState {
public void run() {
System.out.println("Finishing...");
}
public TaskState next(){
return new InitialState();
}
}
Затем вы изменяете состояние таймера.
Timer timer = new Timer();
TaskState state = new InitialState();
timer.schedule( new TimerTask() {
public void run() {
this.state.run();
if( shouldChangeState() ) {
this.state = this.state.next();
}
}
}, 0, 1000 );
Наконец, если требуется выполнить одно и то же, но с разными скоростями, можно использовать TimingFramework . Это немного сложнее, но давайте сделаем холодную анимацию, разрешив картине определенного компонента принимать занимать место с разной скоростью (вместо быть линейной)
-121--2178474-Существует несколько различных вариантов использования этого файла. По существу это производный класс Приложений .
Стенд XAML для расширяемого языка разметки приложений. Это просто файл XML, который позволяет объявить пользовательский интерфейс для Silverlight и даже объектов .NET
app.xaml позволяет объявлять ресурсы, которые передаются по всем приложению. Также App.xaml.cs содержит события уровня приложения: