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 75207
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T20:28:48+00:00 2026-05-10T20:28:48+00:00

I write a large static method that takes a generic as a parameter argument.

  • 0

I write a large static method that takes a generic as a parameter argument. I call this method, and the framework throws a System.InvalidProgramException. This exception is thrown even before the first line of the method is executed.

I can create a static class which takes the generic argument, and then make this a method of the static class, and everything works fine.

Is this a .NET defect, or is there some obscure generic rule I’m breaking here?

For the sake of completeness, I’ve included the method which fails, and the method which passes. Note that this uses a number of other classes from my own library (eg GridUtils), and these classes are not explained here. I don’t think the actual meaning matters: the question is why the runtime crashes before the method even starts.

(I’m programming with Visual Studio 2005, so maybe this has gone away in Visual Studio 2008.)

This throws an exception before the first line is invoked:

    private delegate void PROG_Delegate<TGridLine>(DataGridView dgv, IEnumerable<TGridLine> gridLines, string[] columns);      public static void PopulateReadOnlyGrid<TGridLine>(DataGridView dgv, IEnumerable<TGridLine> gridLines, string[] columns)     {         if (dgv.InvokeRequired)         {             dgv.BeginInvoke                         (                             new PROG_Delegate<TGridLine>(PopulateReadOnlyGrid<TGridLine>),                             new object[] { dgv, gridLines, columns }                         );             return;         }         GridUtils.StatePreserver statePreserver = new GridUtils.StatePreserver(dgv);         System.Data.DataTable dt = CollectionHelper.ConvertToDataTable<TGridLine>((gridLines));         dgv.DataSource = dt;         dgv.DataMember = '';         dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;         GridUtils.OrderColumns<TGridLine>(dgv, columns);         statePreserver.RestoreState();         dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;     } 

This works fine:

    public static class Populator<TGridLine>     {         private delegate void PROG_Delegate(DataGridView dgv, IEnumerable<TGridLine> gridLines, string[] columns);          public static void PopulateReadOnlyGrid(DataGridView dgv, IEnumerable<TGridLine> gridLines, string[] columns)         {             if (dgv.InvokeRequired)             {                 dgv.BeginInvoke                             (                                 new PROG_Delegate(PopulateReadOnlyGrid),                                 new object[] { dgv, gridLines, columns }                             );                 return;             }             GridUtils.StatePreserver statePreserver = new GridUtils.StatePreserver(dgv);             System.Data.DataTable dt = CollectionHelper.ConvertToDataTable<TGridLine>((gridLines));             dgv.DataSource = dt;             dgv.DataMember = '';             dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;             GridUtils.OrderColumns<TGridLine>(dgv, columns);             statePreserver.RestoreState();             dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;          }     }         
  • 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. 2026-05-10T20:28:49+00:00Added an answer on May 10, 2026 at 8:28 pm

    Just FYI, not sure if it’ll fix anything, but your Invoke method can be simplified. This also removes the need for that delegate (possibly leading to a fix?):

    dgv.BeginInvoke(new MethodInvoker(delegate() {     PopulateReadOnlyGrid(dgv, gridLines, columns); })); 

    Your code runs fine for me when I paste it in a form (after commenting out your GridUtils stuff). I even call the method both from the gui thread and the non-gui thread. I tried it in 3.5 and 2.0. Works fine…. (!?)

    Try this code:

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Reflection; using System.Threading;  namespace WindowsFormsApplication1 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }          private delegate void PROG_Delegate<TGridLine>(Control dgv, IEnumerable<TGridLine> gridLines, string[] columns);          public static void PopulateReadOnlyGrid<TGridLine>(Control dgv, IEnumerable<TGridLine> gridLines, string[] columns)         {             if (dgv.InvokeRequired)             {                 dgv.BeginInvoke                             (                                 new PROG_Delegate<TGridLine>(PopulateReadOnlyGrid<TGridLine>),                                 new object[] { dgv, gridLines, columns }                             );                 return;             }             MessageBox.Show('hi');             //GridUtils.StatePreserver statePreserver = new GridUtils.StatePreserver(dgv);             //System.Data.DataTable dt = CollectionHelper.ConvertToDataTable<TGridLine>((gridLines));             //dgv.DataSource = dt;             //dgv.DataMember = '';             //dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;             //GridUtils.OrderColumns<TGridLine>(dgv, columns);             //statePreserver.RestoreState();             //dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;         }          private void button1_Click(object sender, EventArgs e)         {             PopulateReadOnlyGrid(this, new int[] { 1, 2, 3 }, new string[] { 'a' });              ThreadPool.QueueUserWorkItem(new WaitCallback((a) =>             {                 PopulateReadOnlyGrid(this, new int[] { 1, 2, 3 }, new string[] { 'a' });             }));          }      } } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 67k
  • Answers 67k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer It should work the way you have it (or the… May 11, 2026 at 11:44 am
  • added an answer 'Fifth generation programming languages' was an attempt to push logic… May 11, 2026 at 11:44 am
  • added an answer Did you check the Python bindings for the WebKit GTK+… May 11, 2026 at 11:44 am

Related Questions

I write a large static method that takes a generic as a parameter argument.
I need to write a query that will group a large number of records
I try to write to a large file, but it seems like it does
I am trying to write a Java class to extract a large zip file
I've got a large amount of data (a couple gigs) I need to write
I write a singleton c++ in the follow way: class A { private: static
I write a Text Editor with Java , and I want to add Undo
I write a lot of short throwaway programs, and one of the things I
Whenever I write a stored procedure for selecting data based on string variable (varchar,
When I write a class I always expose private fields through a public property

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

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.