Есть ли у вас доступ к пространству имен Oracle где-либо в вашем коде до этого?Это всего лишь предположение, но, возможно, эта пауза приводит к тому, что ваше приложение загружает требуемые .dlls
. Вы можете попробовать предварительно загрузить модуль.Я использую что-то вроде кода ниже в моих приложениях.Сначала я показываю заставку, показывающую, что приложение загружается, а затем вызываю фрагмент ниже, чтобы загрузить все необходимые библиотеки.Таким образом, после загрузки приложения нет никаких пауз в дальнейшем.
void PreloadDLLs()
{
Assembly^ assembly = Assembly::GetEntryAssembly();
array<System::Reflection::AssemblyName^>^ referencedAssemblies = assembly->GetReferencedAssemblies();
for each(System::Reflection::AssemblyName^ referencedAssemblyName in referencedAssemblies)
{
try
{
Assembly^ a = assembly->Load(referencedAssemblyName);
}
catch(System::Exception^ /*e*/)
{
}
}
}
Извинения за синтаксис C ++ / CLI, но, надеюсь, вы сможете увидеть, как преобразовать его в C # - мой немного ржавый: -)
[Редактировать] Я думаю, что это в значительной степени C #:
using System;
using System.Reflection;
private void PreloadDLLs()
{
Assembly assembly = Assembly.GetEntryAssembly();
System.Reflection.AssemblyName[] referencedAssemblies = assembly.GetReferencedAssemblies();
foreach(System.Reflection.AssemblyName referencedAssemblyName in referencedAssemblies)
{
try
{
Assembly a = assembly.Load(referencedAssemblyName);
}
catch
{
}
}
}