Click here to Skip to main content
15,887,683 members
Home / Discussions / WPF
   

WPF

 
GeneralRe: Psd file to XAML Pin
Pete O'Hanlon10-Jul-09 0:42
mvePete O'Hanlon10-Jul-09 0:42 
QuestionManipulating a PNG palette Pin
pnart9-Jul-09 11:50
pnart9-Jul-09 11:50 
AnswerRe: Manipulating a PNG palette Pin
Mark Salsbery10-Jul-09 6:54
Mark Salsbery10-Jul-09 6:54 
GeneralRe: Manipulating a PNG palette Pin
pnart13-Jul-09 7:05
pnart13-Jul-09 7:05 
QuestionMultiple progress bars Pin
vsaratkar9-Jul-09 4:10
vsaratkar9-Jul-09 4:10 
AnswerRe: Multiple progress bars Pin
Pete O'Hanlon9-Jul-09 4:13
mvePete O'Hanlon9-Jul-09 4:13 
AnswerRe: Multiple progress bars Pin
#realJSOP9-Jul-09 4:33
mve#realJSOP9-Jul-09 4:33 
AnswerRe: Multiple progress bars Pin
vsaratkar9-Jul-09 8:53
vsaratkar9-Jul-09 8:53 
Thanks for your quick replies,

I am posting my code. This code is in code behind of WPF window. UI has four ProgressBars which I have to update.




public static List<photopost> allPhotosToUpload = null;

private BackgroundWorker serviceValuesWorker = null;
private BackgroundWorker signatureWorker = null;
private BackgroundWorker photoWorker = null;
private BackgroundWorker mainWorker = null;

public UploadProgressWithfourBars()
{
InitializeComponent();
UploadServiceValuesPhotosAndSignature();
}
private void UploadServiceValuesPhotosAndSignature()
{
bool finalSuccessMessage = false;
var context = new VersentiaMobileDataContext();
var serviceInstances = ServiceInstancesDataAccess.GetAll(context);
bool[] allResponses;
List<signature> signatures = null;

foreach (var serviceInstance in serviceInstances)
{
//Get All Signatures
var serviceValues = serviceInstance.ServiceValues.Where(sv => sv.ServiceProperty.Datatype == "Signature").Select(sv =>sv);
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);
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)
{
try
{
allResponses[i++] = (bool) args.Result;

}
catch (Exception)
{
}
};
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);
bool[] responseArray = new bool[signatures.Count];
int j = 0;
foreach (var signature in signatures)
{
string serviceValuesString = "";
var serviceValuesIDs = serviceValues.Where(sv => sv.SignatureID == signature.SignatureID).Select(sv => sv.ServiceValueID).ToList();
foreach (var ID in serviceValuesIDs)
{
if (ID != serviceValuesIDs.Last())
{
serviceValuesString = serviceValuesString + ID + ",";
}
else
{
serviceValuesString = serviceValuesString + ID;
}
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)
{
try
{
bool[] signatureResponses = (bool[]) args.Result;
foreach (var response in signatureResponses)
{
allResponses[i++] = response;
}

}
catch (Exception)
{
}
};
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);
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)
{
try
{
bool[] photoResponses = (bool[]) args.Result;
foreach (var response in photoResponses)
{
allResponses[i++] = response;
}

}
catch (Exception)
{
}
};
photoWorker.RunWorkerAsync();

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);
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)
{
try
{
if((bool) args.Result)
{
btnClose.IsEnabled = true;
}

}
catch (Exception)
{
}
};
mainWorker.RunWorkerAsync();

btnCancel.Click += ((o, args) =&gt;
{
serviceValuesWorker.CancelAsync();
serviceValuesProgressBar.Value = 0;
signatureWorker.CancelAsync();
signatureProgressBar.Value = 0;
photoWorker.CancelAsync();
photoProgressBar.Value = 0;
mainWorker.CancelAsync();
mainProgressBar.Value = 0;
bool IsDone = false;
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"];
if (!finalSuccessMessage)
{
lblUploadCancelled.Visibility = Visibility.Visible;
btnClose.IsEnabled = true;
btnCancel.IsEnabled = false;
}
});
}
}

private void Click_Close(object sender, RoutedEventArgs e)
{
this.Close();
}



I am getting Accessviolation Exception. "allResponses" array is not modifying at all. The same procedure if I do without threads working fine, but no progress indication to the user.

Please help.
GeneralRe: Multiple progress bars Pin
#realJSOP9-Jul-09 9:32
mve#realJSOP9-Jul-09 9:32 
GeneralRe: Multiple progress bars Pin
Mark Salsbery10-Jul-09 7:04
Mark Salsbery10-Jul-09 7:04 
QuestionCannot set a property on object 'Identity' because it is in a read-only state. [modified] Pin
ASysSolvers9-Jul-09 3:08
ASysSolvers9-Jul-09 3:08 
AnswerRe: Cannot set a property on object 'Identity' because it is in a read-only state. Pin
Pete O'Hanlon9-Jul-09 3:33
mvePete O'Hanlon9-Jul-09 3:33 
GeneralRe: Cannot set a property on object 'Identity' because it is in a read-only state. Pin
ASysSolvers9-Jul-09 3:50
ASysSolvers9-Jul-09 3:50 
AnswerRe: Cannot set a property on object 'Identity' because it is in a read-only state. Pin
Pete O'Hanlon9-Jul-09 4:13
mvePete O'Hanlon9-Jul-09 4:13 
GeneralRe: Cannot set a property on object 'Identity' because it is in a read-only state. Pin
ASysSolvers9-Jul-09 4:27
ASysSolvers9-Jul-09 4:27 
GeneralRe: Cannot set a property on object 'Identity' because it is in a read-only state. Pin
Pete O'Hanlon9-Jul-09 4:38
mvePete O'Hanlon9-Jul-09 4:38 
GeneralRe: Cannot set a property on object 'Identity' because it is in a read-only state. Pin
ASysSolvers9-Jul-09 5:03
ASysSolvers9-Jul-09 5:03 
QuestionPropertyChanged Nofification Pin
schiebel-t9-Jul-09 1:22
schiebel-t9-Jul-09 1:22 
AnswerRe: PropertyChanged Nofification Pin
Pete O'Hanlon9-Jul-09 1:38
mvePete O'Hanlon9-Jul-09 1:38 
GeneralRe: PropertyChanged Nofification Pin
up_late21-Jul-09 13:33
up_late21-Jul-09 13:33 
QuestionWPF Toolkit: DataGrid disbled the cell Pin
laprathab9-Jul-09 0:15
laprathab9-Jul-09 0:15 
Questiondefault control template xaml Pin
Bob Bedell8-Jul-09 13:28
Bob Bedell8-Jul-09 13:28 
AnswerRe: default control template xaml Pin
Kamal Gurnani9-Jul-09 1:06
Kamal Gurnani9-Jul-09 1:06 
GeneralRe: default control template xaml Pin
Bob Bedell9-Jul-09 12:02
Bob Bedell9-Jul-09 12:02 
GeneralRe: default control template xaml Pin
Bob Bedell9-Jul-09 12:04
Bob Bedell9-Jul-09 12:04 

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.