Я не согласен с другими ответами, рекомендующими WindowsFormsApplicationBase
. По моему опыту, это может замедлить ваше приложение. Если быть точным, в то время как он запускает конструктор формы параллельно с заставкой, он откладывает событие Shown.
Рассмотрите приложение (без экрана всплесков) с конструктором, который занимает 1 секунду, и обработчик события на Показано, что занимает 2 секунды. Это приложение можно использовать через 3 секунды.
Но предположим, что вы устанавливаете заставку с помощью WindowsFormsApplicationBase
. Вы можете подумать, что MinimumSplashScreenDisplayTime
из 3 секунд разумно и не замедлит ваше приложение. Но попробуйте, ваше приложение теперь займет 5 секунд.
class App : WindowsFormsApplicationBase
{
protected override void OnCreateSplashScreen()
{
this.MinimumSplashScreenDisplayTime = 3000; // milliseconds
this.SplashScreen = new Splash();
}
protected override void OnCreateMainForm()
{
this.MainForm = new Form1();
}
}
и
public Form1()
{
InitializeComponent();
Shown += Form1_Shown;
Thread.Sleep(TimeSpan.FromSeconds(1));
}
void Form1_Shown(object sender, EventArgs e)
{
Thread.Sleep(TimeSpan.FromSeconds(2));
Program.watch.Stop();
this.textBox1.Text = Program.watch.ElapsedMilliseconds.ToString();
}
Вывод: не используйте WindowsFormsApplicationBase
, если ваше приложение имеет обработчик в событии Slown. Вы можете написать лучший код, который запускает всплеск параллельно как конструктору, так и событию Shown.
Я просто ищу нечто подобное. И обнаружил, что существуют специальные xml-базы данных, делающие именно это.
Посмотрите здесь: Wikipedia
Я нашел, что эта довольно хороша: Sedna
У меня нет практического опыта с этим, но я читал, что IBM DB2 имеет специальные возможности XML .
SQL Server имеет тип поля xml, но налагает некоторые ограничения, когда у вас есть такие поля в таблице. Раздражает (для меня) то, что вы не можете использовать такую таблицу на связанном сервере.
Даже если XML не имеет определенной структуры, пока он проверяет XML, вы все равно можете сохранить его в традиционной базе данных SQL, фактически выписав DOM. У вас будут таблицы для элементов и атрибутов. Элементы и атрибуты будут иметь столбец внешнего ключа для родительского элемента и столбец для имени.
Вы говорите, что вам нужно быстро читать. Что именно ты читаешь? Если вы будете искать определенные теги, то традиционная база данных SQL все равно сможет довольно быстро запросить их.
Взгляните на этот проект: http://exist.sourceforge.net/