i have error shown:
\'Timer\' is an ambiguous reference between \'System.Windows.Forms.Timer\' and \'System.Threading.Timer\'when i added the code for clock
The problem is that you are
using System.Windows.Forms;
using System.Threading;
Both of these namespaces have a Timer
class and the compiler can't tell which one to use. When you declare your Timer
, use the full name, either:
System.Windows.Forms.Timer
or
System.Threading.Timer
WinForms Timer Class
Threading Timer Class
Based on your usage of the class, I think you want System.Windows.Forms.Timer
, like so:
public SocketClient()
{
InitializeComponent();
var timer = new System.Windows.Forms.Timer();
timer.Tick += new EventHandler(TimerOnTick);
timer.Interval = 1000;
timer.Start();
}
There are various options here:
Use an alias:
using UITimer = System.Windows.Forms.Timer;
...
UITimer timer = new UITimer();
Use the fully qualified name:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
Use a namespace alias:
using WinForms = System.Windows.Forms;
...
WinForms::Timer timer = new WinForms::Timer();
However, I would personally suggest splitting up the user interface code from the network code - at which point it's unlikely to be an issue.
I would also note that you're currently reading from the stream without taking the return value into account - that's a bad idea, as you don't know how much of the buffer actually contains new data.