|
hi,
i mean i would like to log successful edits to objects in my application.
does log4net facilitate this?
|
|
|
|
|
neodeaths wrote: is it possible to create a table which can save each changes i make like a log?
You need to differentiate between trace logging and business logging.
Trace logging is output that helps a developer figure out why a production system fails. It exists to solve problems that are unexpected.
Business logging is used by users to figure out what happened, perhaps problems or just validation. It exists to solve problems that are known, for the most part.
The first uses a log library and log files because database failures are something that needs to be trace logged.
The second needs a more formal persistence solution such as a database table
The second probably needs a custom solution depending on business requirements.
The first can use existing libraries. My perception is than log4net is not an ideal solution. The nlog library provides a better solution although even that is not ideal.
|
|
|
|
|
Hello forum,
(sorry if duplicate, I might have post this but cannot find it)
Just created a SL Busines application. In the MYDomainService.cs the default queries are generated.
public IQueryable<dbtable> GetDBTablesCompare()
{
return this.ObjectContext.DBTables;
}
The default returns all columns in the specified table.
I would like to run a script like this:
SELECT * From DBTables A
FULL OUTER JOIN Information_Schema.Columns B ON A.Column_Name = B.Column_Name
AND B.Table_Name = 'FY2007_DATA'
AND B.Table_Schema = 'dbo'
WHERE
A.Table_Schema = 'dbo'
AND A.Table_Name = 'FY2006_DATA'
AND (A.Column_Name IS NULL OR B.Column_Name IS NULL)
Any help will be greatly appreciated
|
|
|
|
|
|
im using a delay on user input
it accept the user input after a second
but whenever it try to do
what it suposed to do it crash
heres my code
{
bool timedOut2 = TBDelay2.EndInvoke(res2);
if (timedOut2)
Dispatcher.CurrentDispatcher.Invoke(
new ActionToRunWhenUserStopstyping2(DoWhatEverYouNeed2),
DispatcherPriority.Input);
}, null);
--
private void DoWhatEverYouNeed2()
{
Random r = new Random();
int n = r.Next();
var page4 = new TabPage(roombox.Text);
tabControl1.TabPages.Add(page4);
tabControl1.SelectedTab = page4;
var browser = new WebBrowser();
browser.Visible = true;
browser.Left = -browser.Width;
browser.ScriptErrorsSuppressed = true;
browser.Dock = DockStyle.Fill;
browser.IsWebBrowserContextMenuEnabled = false;
page4.Controls.Add(browser);
browser.Name = roombox.Text;
page4.Name = roombox.Text;
browser.Navigate("http://www.tinychat.com/" + roombox.Text)
}
|
|
|
|
|
...and the exception message would be ....... ?
and on which line does it throw?
|
|
|
|
|
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
Additional information: Exception has been thrown by the target of an invocation.
at this line
Dispatcher.CurrentDispatcher.Invoke(
new ActionToRunWhenUserStopstyping2(DoWhatEverYouNeed2),
DispatcherPriority.Input);
|
|
|
|
|
also i just updated my visual studio and i get much better detail about the crash
Cross-thread operation not valid: Control 'tabControl1' accessed from a thread other than the thread it was created on.
|
|
|
|
|
as the first lines of your DoWhatEverYouNeed2 method, use
if (InvokeRequired)
{
this.Invoke(new MethodInvoker(DoWhatEverYouNeed2));
return;
}
|
|
|
|
|
well thx alot now everything works but it still seems to be a quit demanding task
is there any way to relief the pressure or its best to leave it that way
|
|
|
|
|
after trying it heavily everything works smoothly is there any way u could
elaborate on why this code all of suden makes everything work
|
|
|
|
|
You can NOT touch a control from anything other that the thread that created it. The UI (or startup) thread owns the controls and touching them at all (even so much as setting a property value) from anything other than the UI thread will fail with unpredictable results.
|
|
|
|
|
Do some error handling in DoWhatEverYouNeed2() - at least, show the exception message and stacktrace in a messagebox or write them to a log file.
|
|
|
|
|
hi thx for u reply where should i put the exeecption handling
in the code i showed
|
|
|
|
|
In a C# 2010 desktop application, I would like to come up with a test to see if the value 'CUST' is a valid directory level within a directory path supplied to the program. Basically the directory path would look like:
"C:\RData\CUST\Omaha\book.xlsx".
The code I am using the following code, but it is not working:
string filesaveLocation=ConfigurationSettings.AppSettings["Location"];
if (filesaveLocation == "*CUST*").
The value for filesaveLocation is obtained from the app.config file.
Thus can you show me how to change the code listed above, so that I can verify that 'CUST' is one of the directory folder names listed in a file path that looks like "C:\RData\CUST\Omaha\book.xlsx"?
|
|
|
|
|
You can use the String.Contains() method to check the path:
if (filesaveLocation.Contains("CUST"))
Or if character casing matters:
if (filesaveLocation.ToUpper().Contains("CUST"))
Or if you want to check for a directory named "CUST":
if (filesaveLocation.Contains(@"\CUST\"))
Good Luck!
-NP
Never underestimate the creativity of the end-user.
|
|
|
|
|
You can use the function
System.IO.Directory.Exists(myFolderPath) for the same
|
|
|
|
|
Try:
if (filesaveLocation.Contains(@"\CUST\"))
The universe is composed of electrons, neutrons, protons and......morons. (ThePhantomUpvoter)
|
|
|
|
|
Thank you for your replies.
I also have to test to see if the directory file path does not = 'CUST', in the directory path called ""C:\RData\CUST\Omaha\book.xlsx". How would you code that change?
|
|
|
|
|
Uhhhh, you're question isn't really clear, but wouldn't the same test work with just the smallest change??
if (filesaveLocation.Contains(@"\CUST\") == false)
|
|
|
|
|
Morning Dave!
Do you need more coffee?
if (!filesaveLocation.Contains(@"\CUST\"))
The universe is composed of electrons, neutrons, protons and......morons. (ThePhantomUpvoter)
|
|
|
|
|
It was WAY past my bedtime.
|
|
|
|
|
|
You're welcome!
The universe is composed of electrons, neutrons, protons and......morons. (ThePhantomUpvoter)
|
|
|
|
|
Note that what you are doing here (and what the replies show you how to do) is checking for the presence of a string within another string.
Checking for the "validity" of a Directory, its actual existence, when your program is running, before you take some action, like writing a file to that Directory, is another thing. .NET hands you some excellent tools for checking whether Directories, or Files, actually exist.
The System.IO library offers a host of static methods such as File.Exists("file path"), Directory.Exists("directory file path") to check run-time existence. And, for more complex purposes, you can create an instance of a DirectoryInfo object, which has Properties like .Exists.
There are several reasons that these functions could return 'false: some are obvious, like the fact that the Directory/File doesn't exist any more; others more subtle, like you have some invalid character in the path name.
Based on your questions, I suggest you get a good basic book on C# programming, and study the different operators you can use with a 'string object.
And then, think about what you are going to do if the string you have in your Application Settings is incorrect: that will take you into studying the tools offered by the System.IO library.
Study, experiment, practice, analyze your errors: learn
yours, Bill
“Humans are amphibians: half spirit, half animal; as spirits they belong to the eternal world; as animals they inhabit time. While their spirit can be directed to an eternal object, their bodies, passions, and imagination are in continual change, for to be in time, means to change. Their nearest approach to constancy is undulation: repeated return to a level from which they repeatedly fall back, a series of troughs and peaks.” C.S. Lewis
|
|
|
|