Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6233817
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T10:22:08+00:00 2026-05-24T10:22:08+00:00

I am currently working on a Silverlight 4.0 Application that displays about 13.000 rows

  • 0

I am currently working on a Silverlight 4.0 Application that displays about 13.000 rows in da DataGrid control. A single item contains about 40 String properties and one integer one.

On the page that contains that Grid is a panel where the user can set different weightings. After clicking on an “Update” button Silverlight should do some calculations depending on that settings.

During the calculation reflection is heavily used (and necessary) to get the values of the String properties. Finally as a result a score is calculated and written to the integer field. This needs to be done for every single of the 13.000 objects.

Currently, as a temporary solution, I use a BackgroundWorker instance and the Grids Dispatcher (to get into the UI thread and to be allowed to access the ItemsSource property of the Grid), iterate over each item and calculate the score.
This process needs about 3 minutes and is way too long as the user doesn’t want to wait more than a few seconds. Unfortunately PLinq & Co are not included in Silverlight 4, and even my try to implement a multi-threaded solution for this failed because I need to fall back to the UI Thread (->Dispatcher) to update each element (that implements INotifyPropertyChanged which is forwarded to the Grid) and to access the ItemsSource. So even when using a semi-parallel solution it isn’t really fast because of the dependence on the UI Thread.

Additional to just displaying the data the user needs to be able to filter the data which is not supported by default. Therefore I created a class similar to this one that implements the ICollectionView interface.

Do you have any idea or suggestion what I could try?

Thanks in advance!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-24T10:22:10+00:00Added an answer on May 24, 2026 at 10:22 am

    My suggestion is don’t use INotifyPropertyChanged on the objects in question or use an ObservableCollection<T>. Instead use a simple class to represent a row and plain old List<T> to hold the set. Use a CollectionViewSource object as the DataGrid.ItemsSource and let that handle sorting.

    When recalculating try this first. Switch to a background thread. Create a new List<T> initialising its capacity to the same as the currently populated List<T> count. Enumerate the current List<T> to perform recalculations and then add into the new List<T>. When all are processed switch to the UI thread and simply assign the new List<T> to the CollectionViewSource.Source property.

    I suspect that this change will make things plenty quick enough without any need to write any parrallel processing of the list. However it should be too hard to include some parrallel processing if you feel that would help. The big advantage of this approach is that the UI is updated only when all is done.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am currently working on an application that allows reverse geocoding using silverlight +
I am working in a Silverlight 4 application. I have a datagrid that I
I'm currently working on a Silverlight application connected to a SQL Server 2008 Express
I am currently working on a silverlight business application, so I have come across
I am currently working on a simple Silverlight app that will allow people to
I'm working on a silverlight application that allows users to fill out common forms.
I'm currently working on the UI of a Silverlight application and need to be
Currently I am working on getting system information via a Silverlight Embedded Application tied
We currently have a quite complex business application that contains a huge lot of
I'm currently working with C# and developing a few Silverlight applications that use sharepoint

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.