How to set a timeout for TcpClient.ConnectAsync()

TcpClient has no direct way to set the connection timeout. It doesn’t have any parameters that allow you to control it, and SendTimeout / ReceiveTimeout don’t apply to the initial connection. The way I control the connection timeout is by awaiting a Task.WhenAny() with TcpClient.ConnectAsync() and Task.Delay(). Task.WhenAny() returns when any of the tasks complete. … Read more

C# – Attribute constructor parameter is not a valid attribute parameter type

Problem I have created a custom attribute class and I am trying to pass in a value. It looks like this: I’m getting the following error message: Attribute constructor parameter has type Color which is not a valid attribute parameter type I have also gotten this error message, which has the same underlying cause: An … Read more

ReportViewer – How to format phone numbers

I am building a ReportViewer report and need to format phone numbers. For example, I want “5551234” to be formatted as “555-1234.” Specify the phone number format Use the following expression: Now when I run the report it looks like this: Other formatting examples In my example above I was using a very simple format. … Read more

ReportViewer RDLC – How to show an enum’s string representation

Problem I’m building a report using ReportViewer. I’m setting the Data Source to a collection of model objects. One of the fields on the model is an enum. When the report renders, it is showing the enum’s numeric value. I want it to show the string representation of the enum instead. Solution In the field … Read more

System.InvalidOperationException: Objects added to a BindingSource’s list must all be of the same type.

Problem I am building a report using ReportViewer RDLC and I’m trying to bind the data. When I try to add my BindingList to the BindingSource I get the following exception: System.InvalidOperationException: “Objects added to a BindingSource’s list must all be of the same type.” Here’s the code causing this: Solution Set the BindingSource.DataSource to … Read more