Click here to Skip to main content
15,891,719 members
Home / Discussions / C#
   

C#

 
AnswerRe: can we create object of partial class Pin
PIEBALDconsult10-Jul-09 6:07
mvePIEBALDconsult10-Jul-09 6:07 
QuestionGet the COM port for my cardreader/writer connected through a usb Pin
Member 435374510-Jul-09 3:52
Member 435374510-Jul-09 3:52 
AnswerRe: Get the COM port for my cardreader/writer connected through a usb Pin
DoctorMick10-Jul-09 4:28
DoctorMick10-Jul-09 4:28 
QuestionEncapsule All List<> Propery And Function Pin
dataminers10-Jul-09 3:38
dataminers10-Jul-09 3:38 
AnswerRe: Encapsule All List<> Propery And Function PinPopular
J4amieC10-Jul-09 3:46
J4amieC10-Jul-09 3:46 
AnswerRe: Encapsule All List<> Propery And Function Pin
PIEBALDconsult10-Jul-09 6:11
mvePIEBALDconsult10-Jul-09 6:11 
QuestionHow to update a chart in a word 2007 document Pin
Mano Piesens10-Jul-09 3:28
Mano Piesens10-Jul-09 3:28 
QuestionHow to use 4 background workers to show upload status Pin
vsaratkar10-Jul-09 3:12
vsaratkar10-Jul-09 3:12 
Hi,

I have an application in which I want to upload some values, signatures and photos to the server.I want to show 4 progress bars. Some values, signatures and photos upload status on their own progress bar. 4th progress bar will show the status of all above 3 uploads collectively.

I am posting a method where I have code for it.

private void UploadServiceValuesPhotosAndSignature()
{
bool[] allResponses;
List<signature> signatures = null;

foreach (var serviceInstance in serviceInstances)
{
//Get All Signatures
signatures = serviceValues.Select(sv => sv.Signature).Distinct().ToList();

//Get All Photos
allPhotosToUpload = PostPhotoCollection.GetPhotos(serviceInstance, context);
int count = allPhotosToUpload.Count + signatures.Count + 1;
allResponses = new bool[count];

int i = 0;

//Upload serviceValues
serviceValuesWorker = new BackgroundWorker();
serviceValuesWorker.WorkerReportsProgress = true;
serviceValuesWorker.WorkerSupportsCancellation = true;

serviceValuesWorker.DoWork += delegate(object s, DoWorkEventArgs args)
{
serviceValuesWorker.ReportProgress(10);
if (serviceValuesWorker.CancellationPending)
{
args.Cancel = true;
return;
}
serviceValuesWorker.ReportProgress(50);

//serviceValuesWorker doing its work

var serializableValues = serviceInstance.ServiceValues.AsSerializable();
var serialisedValues = new Dictionary<string, object[]=""> { { "ValuesInfo", serializableValues } }.Serialize();
string responseFromServer = ServiceRequest.GetResponse("UpdateServiceInstanceMobile", "ServiceInstances", serialisedValues, serviceInstance.ServiceInstanceID.ToString());
var response = responseFromServer.Deserialize<dictionary<string, object="">>();
bool successServiceValues = (bool)response["success"];
if (successServiceValues)
{
serviceValuesWorker.ReportProgress(100);
}
args.Result = successServiceValues;
};
serviceValuesWorker.ProgressChanged += delegate(object s, ProgressChangedEventArgs args)
{
serviceValuesProgressBar.Value = args.ProgressPercentage;
};
serviceValuesWorker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
//serviceValuesWorker modifying the allResponses array
allResponses[i++] = (bool) args.Result;

};
serviceValuesWorker.RunWorkerAsync();

//Upload Signatures
signatureWorker = new BackgroundWorker();
signatureWorker.WorkerReportsProgress = true;
signatureWorker.WorkerSupportsCancellation = true;

signatureWorker.DoWork += delegate(object s, DoWorkEventArgs args)
{
signatureWorker.ReportProgress(10);
if (signatureWorker.CancellationPending)
{
args.Cancel = true;
return;
}
signatureWorker.ReportProgress(50);

//signatureWorker doing its work

bool[] responseArray = new bool[signatures.Count];
int j = 0;
foreach (var signature in signatures)
{
string signaturePath = signature.SignaturePath;
byte[] signatureByteArray = SignatureFileConversion.SignatureFileToByteArray(signaturePath);
string signatureToUpload = signatureByteArray.Serialize();
var signatureResponseFromServer = ServiceRequest.GetSignatureResponse("AddSignature", "ServiceInstances", serviceValuesString, serviceInstance.ServiceInstanceID.ToString(), signatureToUpload);
var signatureResponse = signatureResponseFromServer.Deserialize<dictionary<string, object="">>();
responseArray[j++] = (bool)signatureResponse["success"];
}
}
if(!responseArray.Contains(false))
{
signatureWorker.ReportProgress(100);
}
args.Result = responseArray;
};
signatureWorker.ProgressChanged += delegate(object s, ProgressChangedEventArgs args)
{
signatureProgressBar.Value = args.ProgressPercentage;
};
signatureWorker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
bool[] signatureResponses = (bool[]) args.Result;
foreach (var response in signatureResponses)
{
//modifying the allResponses array

allResponses[i++] = response;
}

};
signatureWorker.RunWorkerAsync();

//Upload Photos
photoWorker = new BackgroundWorker();
photoWorker.WorkerReportsProgress = true;
photoWorker.WorkerSupportsCancellation = true;

photoWorker.DoWork += delegate(object s, DoWorkEventArgs args)
{
photoWorker.ReportProgress(10);
if (photoWorker.CancellationPending)
{
args.Cancel = true;
return;
}
photoWorker.ReportProgress(50);

//photoWorker doing its work

bool[] photoResponseArray = new bool[allPhotosToUpload.Count];
int k = 0;
foreach (var photo in allPhotosToUpload)
{
photoResponseArray[k++] = PostPhotoCollection.SendPhoto(photo);
}
if(!photoResponseArray.Contains(false))
{
photoWorker.ReportProgress(100);
}
args.Result = photoResponseArray;
};
photoWorker.ProgressChanged += delegate(object s, ProgressChangedEventArgs args)
{
serviceValuesProgressBar.Value = args.ProgressPercentage;
};
photoWorker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
bool[] photoResponses = (bool[]) args.Result;
foreach (var response in photoResponses)
{
allResponses[i++] = response;
}

};
photoWorker.RunWorkerAsync();


//Update main ProgressBar
mainWorker = new BackgroundWorker();
mainWorker.WorkerReportsProgress = true;
mainWorker.WorkerSupportsCancellation = true;

mainWorker.DoWork += delegate(object s, DoWorkEventArgs args)
{
mainWorker.ReportProgress(10);
if (mainWorker.CancellationPending)
{
args.Cancel = true;
return;
}
mainWorker.ReportProgress(50);

//mainWorker doing its work
if (!allResponses.Contains(false))
{
bool IsDone = true;
string finalResponseFromServer = ServiceRequest.GetFinalResponse("SubmitChanges", "ServiceInstances", IsDone.ToString(), serviceInstance.ServiceInstanceID.ToString(), allPhotosToUpload.Count.ToString(), signatures.Count().ToString());
var finalResponse = finalResponseFromServer.Deserialize<dictionary<string, object="">>();
finalSuccessMessage = (bool)finalResponse["success"];
args.Result = finalSuccessMessage;
if (finalSuccessMessage)
{
mainWorker.ReportProgress(100);
}
}
};
mainWorker.ProgressChanged += delegate(object s, ProgressChangedEventArgs args)
{
mainProgressBar.Value = args.ProgressPercentage;
};
mainWorker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
btnClose.IsEnabled = true;

};
mainWorker.RunWorkerAsync();


}
}




I am getting AccessViolation exception, and the array allResponses is not modified at all.
I know the result of DoWork event can be accessed in RunCompleted event, then why allResponses array is not modifying.

Thanks for reading I know the code block is too long.
AnswerRe: How to use 4 background workers to show upload status Pin
MumbleB10-Jul-09 3:54
MumbleB10-Jul-09 3:54 
GeneralRe: How to use 4 background workers to show upload status Pin
vsaratkar10-Jul-09 4:15
vsaratkar10-Jul-09 4:15 
GeneralRe: How to use 4 background workers to show upload status Pin
vsaratkar10-Jul-09 5:19
vsaratkar10-Jul-09 5:19 
GeneralRe: How to use 4 background workers to show upload status Pin
MumbleB10-Jul-09 6:46
MumbleB10-Jul-09 6:46 
GeneralRe: How to use 4 background workers to show upload status Pin
vsaratkar10-Jul-09 7:21
vsaratkar10-Jul-09 7:21 
Questionhow to build a receipt number Pin
kKamel10-Jul-09 2:50
kKamel10-Jul-09 2:50 
GeneralRe: how to build a receipt number Pin
kKamel10-Jul-09 2:58
kKamel10-Jul-09 2:58 
AnswerRe: how to build a receipt number Pin
Mirko198010-Jul-09 3:01
Mirko198010-Jul-09 3:01 
QuestionRe: how to build a receipt number Pin
kKamel10-Jul-09 3:23
kKamel10-Jul-09 3:23 
AnswerRe: how to build a receipt number Pin
Mirko198010-Jul-09 3:36
Mirko198010-Jul-09 3:36 
GeneralRe: how to build a receipt number Pin
kKamel10-Jul-09 3:39
kKamel10-Jul-09 3:39 
GeneralRe: how to build a receipt number Pin
kKamel10-Jul-09 3:55
kKamel10-Jul-09 3:55 
GeneralRe: how to build a receipt number Pin
Mirko198010-Jul-09 4:08
Mirko198010-Jul-09 4:08 
AnswerRe: how to build a receipt number Pin
musefan10-Jul-09 3:18
musefan10-Jul-09 3:18 
GeneralRe: how to build a receipt number Pin
kKamel10-Jul-09 3:37
kKamel10-Jul-09 3:37 
GeneralRe: how to build a receipt number Pin
musefan10-Jul-09 4:07
musefan10-Jul-09 4:07 
GeneralRe: how to build a receipt number Pin
kKamel10-Jul-09 3:53
kKamel10-Jul-09 3:53 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.