c # Фоновый рабочий класс - PullRequest
       3

c # Фоновый рабочий класс

2 голосов
/ 08 февраля 2011

Я хочу поместить этот метод в фоновый рабочий класс, я пытаюсь, но застрял, может ли кто-нибудь помочь мне, как запустить этот метод в фоновом рабочем классе:
Я вызываю этот метод на моей странице asp.net,где файл архивируется на сервере и затем возвращается клиенту.но архивирование файла может занять больше времени, и пользователь увидит экран занятости, поэтому, чтобы избежать этого, я хочу использовать фоновый рабочий класс:

[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
public string Zip(string f, bool original)
{
    string zip = "";
    try
    {
        files = HttpContext.Current.Server.UrlDecode(files);
        string[] fileCollection = files.Split('*');
        zipFile = class1.zipfile(fileCollection, IsOriginal);

        int fileLength = files.Length;
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception during processing {0}", ex);
   }
    return File;
}

1 Ответ

3 голосов
/ 08 февраля 2011

Кажется, ваша проблема в возврате значения из BackgroundWorker. Это можно сделать так:

В методе DoWork работника установите для e.Result значение, которое вы хотите вернуть:

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{   
    ...
    e.Result = File;
}

Затем в методе RunWorkerCompleted вы можете получить доступ к этому значению в основном потоке:

private void backgroundWorker1_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e)
{
    string result = e.Result as string;
}

Я предположил, что File здесь строка, но вы можете привести ее к нужному объекту.

Зачем вам это нужно в веб-приложении, я понятия не имею, но как это сделать, по крайней мере;)

...