2012-02-20 4 views
1

Мне нужно реализовать функцию Bandwidth Throttling в приложении Windows. Есть два потока на SO:Регулирование полосы пропускания в приложении C# windows

Но это для веб-приложения. Мне нужно это для windows app. Как я могу реализовать его в окнах? Могу ли я использовать вышеупомянутые ссылки для приложений Windows?

Вот код, я использую:

// Apply bandwidth control 
int uploadLimit = GlobalClass.GetFileUploadLimit(); 

if (uploadLimit > 0) 
{ 
    long bps = uploadLimit * 1024; 
    const int BufferSize = 8192; 
    MemoryStream mstream = new MemoryStream();//Stream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize); 

    // Openup source stream. 
    using (FileStream sourceStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize)) 
    { 
    // Create throttled destination stream. 
    ThrottledStream destinationStream = new ThrottledStream(mstream, bps); 
    byte[] buffer = new byte[BufferSize]; 
    int readCount = sourceStream.Read(buffer, 0, BufferSize); 

    while (readCount > 0) 
    { 
     destinationStream.Write(buffer, 0, readCount); 
     readCount = sourceStream.Read(buffer, 0, BufferSize); 
     client.FileUpload(Convert.ToInt16(userId), System.IO.Path.GetFileName(fileName), buffer); 
     //Webservice: Here is the problem 
    } 
    } 
} 

В приведенном выше коде, есть веб-сервис я использую, чтобы загрузить файл. Эта веб-служба берет целый файл в байтах сразу. Поэтому в этом случае я не могу загрузить файл в куски. Может ли кто-нибудь предложить мне какой-то способ выполнить это или должен ли я изменить обслуживание, чтобы принимать данные в кусках?

+1

Вторая ссылка, которую вы опубликовали, имеет ссылку на пример ThrolledStream. Это должно работать для вашего приложения Windows. – akhisp

+0

Я использовал тот же класс дросселирования из ссылки. См. Мой код выше. –

+0

Вы не написали код, который загружает, ясно, что вы ничего не можете сделать, чтобы изменить способ его работы. –

ответ

0

Да, вы можете использовать ThrottledStream в приложении WinForms/WPF.

+1

Проверьте мой вопрос и, пожалуйста, проверьте, что я могу сделать для этого? –

Смежные вопросы