Veja a Biblioteca Paralela de Tarefas C#. Você pode criar uma tarefa que é muito simples. Por exemplo...
Task myTask= new Task(() => {
Console.WriteLine(@"hello");
//Call stored procedure here
});
myTask.start();
Isso executará o código envolvido na tarefa em paralelo com o thread principal. Se você deseja verificar se a tarefa está concluída, você pode usar
if(myTask.IsCompleted())
{
Console.WriteLine(@"My task is finished");
}
Esse método evitou alterar o procedimento armazenado e permite que o C# lide com o desempenho.
Edit:-E para evitar que o thread principal termine primeiro, adicione
Task.WaitAll(myTask);
Isso suspenderá o thread principal até que a tarefa seja concluída.