|
the tab width of 4 in the vs.net editor really irritates me. for highly indented code, it becomes almost unreadable. i would really like to bring it down to 2 or so. could someone please help.
thanking you in advance
Krishanu Nandy
"If absolute power corrupts absolutely, where does that leave God" -George Deacon
|
|
|
|
|
Try to look into the options...
Extras->Options->Text-Editor->C#
-- modified at 4:07 Sunday 16th October, 2005
And btw: we have a separate forum vor VS IDE issues here...
|
|
|
|
|
how can i specify a directx video source as binary stream? instead of having a directory. is that even possible threw any intermediate classe or any other way.
thx
|
|
|
|
|
Do you mean like through an ASP.NET web site? Sure. Even files are streamed from the file system to the web client through the web server using an IHttpHandler implementation. See http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebihttphandlerclasstopic.asp[^] for more information. You should also read How To Create an ASP.NET HTTP Module Using Visual C# .NET[^] in the Microsoft KB for a good example.
Consider if this is really necessary, though. Windows Server 2003 comes with Windows Media Services that does all this already plus more that would be difficult - and dare I say pointless - already implemented for you, such as security, on-demand streaming, real-time streaming of live content, and more. It's not difficult to set up and has a pretty cool and simple interface.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
thx for your response but i need to do that because i need to test a new transport layer. and let me rephrae my question. i have a binary stream object that i can invoke the read method on, is there any way i can use that stream as an imput to the directx class
thx
|
|
|
|
|
A stream is just a stream of bytes, so you can use it however necessary. DirectX has a number of ways of streaming data and DMO objects can be chained to read, decode, and play a stream of bytes. Please be specific in what you're trying to do. DirectX, for instance, is a framework for drawing and networking. There isn't such a thing as a "DirectX video source" so I'm afraid I'm not sure what you mean.
Do you have a stream of bytes for a Windows Media Video (WMV) file and want to display it? You could actually just host the Windows Media control as an ActiveX component in the AxHost control. Use aximp.exe or Visual Studio.NET's "Add References" dialog and the COM tab to add it to your project (or customize the toolbox to add it for later use).
For information about chaining DMO objects, there's some great resources on the Internet. Check out http://search.msn.com/results.aspx?q=site%3Amsdn.microsoft.com+DMO+video+C%23[^] for a few articles on MSDN.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hi,
To remove Event Handlers from my all controls in the form, I want to use a generic code as follows.
1) Run through all controls in the Form
2) Run through all Events of a control using Reflection .GetEvents()
3) For each Event, I want to get the Delegate, so that I can remove all using GetInvocationList(). but .NET doesn't provide any property to get delegate for the Event Handler.
Please help. How can I get the Delegate for the Event Handler.
|
|
|
|
|
The EventInfo contains information about an event, which describes add and remove accessors. It also has a method to remove an event handler, EventInfo.RemoveEventHandler . In order to call this you must get the delegate for the event handler (the target method).
To do this you need to get the field corresponding to the event that is the delegate. By default in C# at least, that field has the same name as the event. So, you can use EventInfo.Name then call Type.GetField with the name and the right BindingFlags . Cast the field value to Delegate and then you can get the invocation list, i.e. each target added to the delegate (a multicast delegate).
Below is a quick sample I threw together.
using System;
using System.Reflection;
class Test
{
public event EventHandler TestEvent;
public static void Main(string[] args)
{
Test t = new Test();
Console.WriteLine("Adding event handlers");
for (int i = 0; i < 5; i++)
{
t.TestEvent += new EventHandler(new Test(i).OnTestEvent);
Console.WriteLine("Added event handler to test " + i);
}
Console.WriteLine("Calling event");
if (t.TestEvent != null)
{
t.TestEvent(t, EventArgs.Empty);
}
Console.WriteLine("Removing event handlers");
RemoveAllHandlers(t);
Console.WriteLine("Calling event again");
if (t.TestEvent != null)
{
t.TestEvent(t, EventArgs.Empty);
}
}
Test()
{
}
int index = 0;
Test(int index)
{
this.index = index;
}
void OnTestEvent(object sender, EventArgs e)
{
Console.WriteLine("Handled from test " + index);
}
static void RemoveAllHandlers(Test test)
{
Type t = test.GetType();
foreach (EventInfo ei in t.GetEvents())
{
FieldInfo fi = t.GetField(ei.Name, BindingFlags.Public |
BindingFlags.NonPublic | BindingFlags.Instance);
if (fi != null)
{
Delegate d = (Delegate)fi.GetValue(test);
foreach (Delegate handler in d.GetInvocationList())
{
Test target = handler.Target as Test;
if (target != null)
{
Console.WriteLine("Removing event handler from test " + target.index);
}
ei.RemoveEventHandler(test, handler);
}
}
}
}
}
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Thanks Heath for your help. I got it what you explained but when I try that with this sample code, it didn't work. Please help me. Yoour help is appreciated.
I have a TextBox "textBox1" in my windows form. I have a handler for TextChanged event. I am trying to remove this using this code. but it doesn't work. Please help.
<br />
foreach(EventInfo ev in textBox1.GetType().GetEvents())<br />
{<br />
FieldInfo fi = textBox1.GetType().GetField(ev.Name,<br />
BindingFlags.Public |<br />
BindingFlags.NonPublic |<br />
BindingFlags.Instance);<br />
<br />
if (fi != null)<br />
{<br />
Delegate d = (Delegate)fi.GetValue(textBox1);<br />
foreach(Delegate handler in d.GetInvocationList())<br />
{<br />
ev.RemoveEventHandler(this, handler);<br />
}<br />
}<br />
}<br />
|
|
|
|
|
Most - if not all - of the Windows Forms controls provided by the .NET Framework do not use the event name as the field name. Please use ildasm.exe installed with the .NET Framework SDK to see what the fields are.
Take the add_TextChanged method (the add accessor method for the Control.TextChanged event):
.method public hidebysig specialname instance void
add_TextChanged(class [mscorlib]System.EventHandler 'value') cil managed
{
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance class [System]System.ComponentModel.EventHandlerList [System]System.ComponentModel.Component::get_Events()
IL_0006: ldsfld object System.Windows.Forms.Control::EventText
IL_000b: ldarg.1
IL_000c: callvirt instance void [System]System.ComponentModel.EventHandlerList::AddHandler(object,
class [mscorlib]System.Delegate)
IL_0011: ret
} You can use ildasm.exe (or an application like .NET Reflector that can also decompile source code) to view the System.ComponentModel.EventHandlerList, System type.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Thanks a lot for your help.
But when I checked it in ILDASM, I found that each control uses different standards. For e.g. for SelectedIndexChanged has a filed called EVENT_SELECTEDCHANGED. So the generic code that I am thinking of may not work properly. Pls advise.
|
|
|
|
|
A better question would be, what are you trying to do anyway? There may be better ways to solve your problem. For example, if you don't want event handlers to fire under a certain condition, use a state variable and don't run all or the brunt of your event handler code if that state variable is set. If you have a lot of code to synchronize you might use Monitor.TryEnter against a singleton used by the entire application.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Here is my problem:
I need a way to encode X and Y (can be negative numbers and equals) to return me a N integer number always diferent.
(x=2,y=2) = N
(x=-2,y=2) = different N
(x=0,y=0) = another different N
Understand me? Anyone can help me? Thanks in advanced!
|
|
|
|
|
Hi,
If you're trying to get a unique 32 bit number from two other 32 bits numbers, it can't be done otherwise you'd be able to invent an infinite compression algorithm. ie. you give me 32 bits and somehow I'll decode it to 64 (2x32).
What about making N a long (64-bits) and using casting and bit shifting to put the the first integer in the lower 32 bits and the second in the upper 32 bits?
Rgds,
Rob Philpott.
|
|
|
|
|
Or just define a struct, which is a value type and, hence, will always be different. By default Equals returns true if the values of all members are the same:
using System;
struct N
{
public int X;
public int Y;
public N(int x, int y)
{
X = x;
Y = y;
}
public override string ToString()
{
return "[X=" + X + ", Y=" + Y +"]";
}
}
class Test
{
static void Main()
{
N n1 = new N(2, 2);
N n2 = new N(-2, 2);
N n3 = new N();
Console.WriteLine("n1 = " + n1);
Console.WriteLine("n2 = " + n2);
Console.WriteLine("n3 = " + n3);
Console.WriteLine("n1.Equals(n1): " + n1.Equals(n1));
Console.WriteLine("n1.Equals(n2): " + n1.Equals(n2));
}
}
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Problem is:
1. I have to, in some way, save points (x,y) to a skiplist
2. I've to search for that point in that skiplist and return true if is in it otherwise false.
3. But how can I search for a point that is not a single integer? How can I compare if it's higher or lower to go to next node?
|
|
|
|
|
It's you're type - define it however you need to. You could, for example (and consistency), implement IComparable based on whatever logic you wish (like X takes precedence over Y). The other reply you got already implies that by pushing X into the upper 32 bits and Y into the lower 32 bits. That means X takes precedence because it cares greater value. That'd really be no different than something like this:
struct N : IComparable
{
int IComparable.CompareTo(object obj)
{
if (obj == null) throw new ArgumentNullException("obj");
if (obj.GetType() != GetType()) throw new ArgumentException();
N n = (N)obj;
if (X == n.X)
{
return n.Y - Y;
}
else
{
return n.X - X;
}
}
}
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Ok, so if you happen to read my previous post from today you will see that i'm trying to push about .5M to a db...
I have to do this by use of a service, and currently i'm having difficulty getting the service to start within the time limit that windows places on starting a service...
So...
How should i start the service...place it into service, and have it parse any data that is currently awaiting to be sent?
maybe a better way to ask this is to say::: i need to place my service into operation, have it register as started THEN begin pushing the data over to the db... currently if i start the service with data waiting the service fails, because it can't start quick enough, becasuse its still reading the data in the logs.
please note that if the log is empty the service starts fine...and runs acording to plan as i begin to populate the log file...however if i have already have data in the log then it will time-out on start up because it is still reading the data.
Please help....
string Beautiful;
Beautiful = "ignorant";
label1.Text = "The world is full of " + Beautiful +" people.";
Why is common sense such an un-common comodity?
|
|
|
|
|
ServiceBase.OnStart and ServiceBase.OnStop are meant for initialization and destruction of your service, respectively. They should be as fast as possible, as you've seen. Instead, push all work into a separate thread and simply start the thread.
class MyDbService : ServiceBase
{
public override void OnStart(string[] args)
{
Thread t = new Thread(new ThreadStart(UpdateDb));
t.Name = "Db Updater";
t.Start();
}
public override void OnStop()
{
}
void UpdateDb()
{
}
} You might also consider using a ThreadPool and splitting up units of work based on your inputs and number of connections available from the client to the database. If the database implements connection pooling (depends on connection string options, typically) and a client can open a number of connections to the same database you could get a lot of performance boosts this way.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hello....
I'm stuck on a piece of logic that i'm sure is pretty simple but i've been thinking about it so long now that my mind has literally stopped working....
With that said...
I am writing events to a log file that i then need to turn around and once a day backup-or move to the db.
Once i begin moving to the db i need to parse the separate fields (date/time, user, event message, priority, etc) into separate columns.
Yes, I am fully aware that it would be easier to just write it to the db from the begining...but every action we call is already going to the db so it doesn't need to be contending with event logs.
So, due to the format of my log files i need to read until "- - " for instance: {username}- -{Event Message}- -{etc...} i then need to send that data to the db to the independant columns.
This of course poses two problems, at least that i can see..first being how do i safely parse the string until i hit the "- - "(i am willing to change that to something more unique if necessary).
and Second...
how do i quickly deposit this to the db? I am doing this at night when 90% of our clients will be closed, but there is that small amount of sites that run 24/7, so it doesn't need to interupt their operations!!!
(oh, by the way i've got about 5 logs to send over and they normaly are 100+k each daily)
string Beautiful;
Beautiful = "ignorant";
label1.Text = "The world is full of " + Beautiful +" people.";
Why is common sense such an un-common comodity?
|
|
|
|
|
1. If you would reduce it to one special chcracter you can spplit the whole string via string.Split('|') into smaller pieces without having to parse anything.
2. The fastest way greatly depends on your database type. But rethink if you really want it fast: Is it probably better to make it a bit slower, so that the database or any other processes can also answer other requests in the meanwhile? For this a seperate thread with low priority could be usefull.
|
|
|
|
|
I wouldn't worry if you mean 100+KB per day, because that is quite small. If you mean 100+K records, then it could take a while. Just read each line, split it with split('- -'), and shove it into the database using a stored procedure. On a moderate single processor machine running sql server, you should easily get 1000 records per second. A very slow server may take up to 5 times longer.
Try the simple approach first, then optimize later. If you DO need to optimize, look to sending batches of inserts in each command, or passing your data as strings into a stored proc and parsing them out in there. Usually, these extremes are not necessary.
Simple approach:
StreamReader sr;
String str;
String[] arr;
String delim = "- -";
SQLCommand cmd;
SQLConnection cn;
//init connetion and command here and open connection
//open streamreader here
str = sr.ReadLine;
while (sr.Peek() >= 0)
{
arr = str.Split(delim.ToCharArray());
cmd.Parameters("@Param1").Value = arr[0];
...
cmd.ExecuteNonQuery();
}
cn.close;
sr.close;
|
|
|
|
|
Hi,
I am working on a project to come out with new ways of sending video streams over a network, and I was wondering if this scenario is possible in c#.
I load a avi file on a server using directx managed lib, send the video to the client threw tcp and read the sent data from memory without writing it to the HD pass it threw the some directx classes, and start playing the video before it is totally downloaded.
I am pretty good in network programming but have just started investigating video codec and playback
Any article, web site, book, tutorial, or code snippet would be greatly appreciated.
thx
|
|
|
|
|
I have just dabbed on this stuff, but AFAIK, you would need:
1. a stream compatible media, eg wmv, asf, mpeg2, mpeg. NOT a generic wrapped avi file, unless u can handle it somehow in part (2).
2. Input and output Directshow filters to handle the transport. Unfortunately I have not seen any source for things of this kind, but I have in some commercial products. It cant be that hard to write though, if you have some background knowledge.
I suggest you look at the DirectShow MSDN docs. They part of the Platform SDK docs.
And finally when you did it, write an article please I would love to see it in action!
xacc-ide 0.0.99-preview4 now with C#, C, IL, XML, Nemerle and Boo highlighting support!
|
|
|
|
|
Okay, I have a better question.
How do you make a dataset persist between page refreshes without executing your query over and over?
Thanks.
SD
|
|
|
|
|