|
thanks Dave for the reply.
But at least we can know how many users are accessing the DB.
Any clue.
Bajrang
|
|
|
|
|
Is this Access database sitting in a network share on a server?
|
|
|
|
|
yes some where in network
Bajrang
|
|
|
|
|
Then you can use DirectoryServices to get at it. You can find an example here[^].
|
|
|
|
|
You would need to trap the start and end events of the application part of the database, there is no system based logging of users in the database (it is a SINGLE user database after all).
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Mycroft Holmes wrote: You would need to trap the start and end events of the application part of the database,
Presumably you mean in the C# application (versus the MS Access GUI app.)
|
|
|
|
|
jschell wrote: Presumably you mean in the C# application
God only knows, the poor bugger is using Access but as this is a C# forum, I presume you are correct.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Yes Mycroft Holmes, in C# Application only..
Bajrang
|
|
|
|
|
You can do it through ADO
This is VBA code, but it should give you the idea
Sub ReturnUserRoster()
Dim cnn As New ADODB.Connection
Dim rst As ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Program Files\Microsoft " & _
"Office\Office\Samples\Northwind.mdb;"
Set rst = cnn.OpenSchema(adSchemaProviderSpecific _
, , JET_SCHEMA_USERROSTER)
Debug.Print rst.GetString
Set rst = Nothing
Set cnn = Nothing
End Sub
It's well known that if all the cat videos and porn disappeared from the internet there would be only one site left and it would be called whereareallthecatvideosandporn.com
|
|
|
|
|
I am hoping to get som advise from someone that has worked with audio programming in C#.
One of the thing I want to do is to play a section from a WAV file. E.g if the WAV file is 60 seconds long I want to be able to play e.g from 00:12 to 00:20 i.e 8 seconds. Any suggestions on how to do this? Any suggestions for good audio framework/libraries for C#?
Thanks
|
|
|
|
|
Why not search CodeProject, and examine the articles/code already here: example: searching on "c# audio .wav playback" => [^] ? Try varying the search terms. I predict you will find some resource here immediately useful to you; possibly, this: [^].
Google CEO, Erich Schmidt: "I keep asking for a product called Serendipity. This product would have access to everything ever written or recorded, know everything the user ever worked on and saved to his or her personal hard drive, and know a whole lot about the user's tastes, friends and predilections." 2004, USA Today interview
|
|
|
|
|
I am not positive on how to select the start/end position, but I know it is possible. I highly suggest using the NAudio library for this:
https://naudio.codeplex.com/[^]
NAudio is extremely robust and will provide you with everything you need. In the source code of the demo apps download, there are lots of examples on how to accomplish various tasks. I believe your answer is within one of those samples.
Hope that helps!
|
|
|
|
|
I remember I played around with playing MP3's a little bit with NAudio, here's a little bit of code that uses NAudio that may help you out...
IWavePlayer waveOutDevice;
WaveStream mainOutputStream;
WaveChannel32 volumeStream;
string fName = @"song.mp3";
private void Form1_Load(object sender, EventArgs e)
{
try
{
waveOutDevice = new WaveOut();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
}
}
private void btnPlay_Click(object sender, EventArgs e)
{
try
{
if (waveOutDevice.PlaybackState.ToString() == "Playing")
{
return;
}
mainOutputStream = CreateInputStream(fName);
waveOutDevice.Init(mainOutputStream);
waveOutDevice.PlaybackStopped += new EventHandler<StoppedEventArgs>(waveOutDevice_PlaybackStopped);
waveOutDevice.Play();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
}
}
private void waveOutDevice_PlaybackStopped(object sender, EventArgs e)
{
try
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
}
}
private void btnStop_Click(object sender, EventArgs e)
{
try
{
if (waveOutDevice != null)
{
waveOutDevice.Stop();
}
if (mainOutputStream != null)
{
volumeStream.Close();
mainOutputStream.Close();
}
if (timerPosition.Enabled)
{
timerPosition.Enabled = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
}
}
private WaveStream CreateInputStream(string fileName)
{
try
{
WaveChannel32 inputStream;
if (fileName.EndsWith(".mp3"))
{
WaveStream mp3Reader = new Mp3FileReader(fileName);
inputStream = new WaveChannel32(mp3Reader);
}
else
{
throw new InvalidOperationException("Unsupported extension");
}
volumeStream = inputStream;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
}
return volumeStream;
}
private void CloseWaveOut()
{
try
{
if (waveOutDevice != null)
{
waveOutDevice.Stop();
}
if (mainOutputStream != null)
{
volumeStream.Close();
volumeStream = null;
mainOutputStream.Close();
mainOutputStream = null;
}
if (waveOutDevice != null)
{
waveOutDevice.Dispose();
waveOutDevice = null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
CloseWaveOut();
}
|
|
|
|
|
|
I have webservice and used memorycache to cache the lookups. My service is running on different machine. My client program accessing the that service is on other machine.
suppose my client calls the webservice and it gets data and add it to memory cache. Second time if client calls the webservice again, then does the cache will have the data or not (as my webservice and client are running on different machines)
|
|
|
|
|
The memory cache exists on the machine that the web service resides on.
|
|
|
|
|
Thank you Maxx, could you please eloborate your answer with respect to below scenario:
Service A: Gets some lookup data.
Where Service A is called from Service B.
Service A and Service B can be running on different machines.
So it looks this below
In service B, i have a class with method Say GetCityLookup()
GetCityLookup()
{
//Call service A to get city lookup
//add the response from service A in to the memorycache object.
}
So next time if GetCityLookup is called, will the data present in the cache or not.
|
|
|
|
|
I'm writing an application that performs a few independant tasks in the background. It's a console application.
My issue is that when the program is run, it starts to execute some of the stuff on the threads (processes maybe 1-2 lines of code) then quits before all the tasks are finished (I'm using the Task library, rather than standard Threads)
Rather than cramming all of my code into the Main() function, I'm separating them out into different functions for readability.
If I add a Console.ReadKey() at the end of the Main function, all the tasks run properly (they only take maybe 1-2 seconds, though over time that could change to several minutes, as it's performing file operations) and close properly when I hit a button.
However, once I'm finished with it, I don't want to have make the user do any inputs (it's going to be a "scheduled" task), in fact the window won't even be shown.
Part of my problem is that, by the nature of my program, I can't ever be completely sure of how many tasks are going to be running. The program pulls in a list of what needs to be done from an xml file.
Is there a safe way to perhaps create a list of tasks, then at the end of the Main() function, have it wait till all those tasks are complete before the program closes?
I tried using a
List<Task> but it didn't seem very safe, as I'd be building the array with other functions then doing a foreach() on the list and starting each task.
modified 31-Aug-13 7:33am.
|
|
|
|
|
Sorry, but I'm not downloading anything from an unknown URL.
But, If you're indeed using Tasks, there is always Task.WaitAll()[^] which is a blocking call that waits for all of the specified Tasks to complete before proceeding.
|
|
|
|
|
Problem with Task.WaitAll() is that it expects a fixed array (Task[]) of tasks, whereas the array could be anything from a single task to a dozen of them, and it's not known at run time.
The tasks are also created and start in a separate function from the Main() function.
I suppose I could (and might end up needing to) cram everything into Main() but I'm trying to avoid that as much as possible.
(Also, it's Pastebin, you're not downloading anything [besides overall web cache of the website], it's just a copy-paste of my code with syntax highlighting.)
|
|
|
|
|
Vouksh wrote: Problem with Task.WaitAll() is that it expects a fixed array (Task[]) of tasks,
whereas the array could be anything from a single task to a dozen of them, and
it's not known at run time.
Bullshit. Create a List<task> and add your Tasks to it. When you're done, call .ToArray() on the List and use you use that in Task.WaitAll.
Task.WaitAll can go into your code that creates your tasks. Since it's a blocking call, control will NOT return back to Main to end the application before the tasks are complete.
|
|
|
|
|
Thank you, I hadn't thought of using .ToArray() on a List. Forgot I could, honestly. I'll give it a try and, if it works, I'll mark this as solved.
Edit: Worked perfectly! Thank you very much!
|
|
|
|
|
Dave K. has answered your question, but I think you might get some benefit from a fantastic article by Keith Barrow (revised Aug. 30, 2013), "Await Tasks in C#4 using Iterators," about creating the functionality of C#5.0's await/async functionality for people using C#4.0.
It's one of the best written articles I have ever seen on CodeProject, and it contains a wealth of information that will give you "deep background" on threads, and asynchronous events [^].
good luck, Bill
Google CEO, Erich Schmidt: "I keep asking for a product called Serendipity. This product would have access to everything ever written or recorded, know everything the user ever worked on and saved to his or her personal hard drive, and know a whole lot about the user's tastes, friends and predilections." 2004, USA Today interview
modified 2-Sep-13 5:06am.
|
|
|
|
|
Thanks, I'll check it out.
|
|
|
|
|
BillWoodruff wrote:
article by Keith Barrow (revised Aug. 30, 2013), "Await Tasks in C#4 using Iterators,"
Thanks for the very kind words and article "plug" (promotion), my friend! The author is a different "Keith", though.
|
|
|
|