• Content count

  • Joined

  • Last visited

Community Reputation

100 Neutral

About thona

  • Rank
  1. Well, IF he works on a server system that i s supposed to have a high uptime and load/unload plugins dynamicalle - you know, reading the documentation tells you that a class loaded once into an appdomain can not be unloaded. So, if you have this requirement - which reading the OP will tell you he has, let me quote for you: ::and was wondering if creating new AppDomain instances for every plugin ::as they're loaded / unloaded is the only way to go. See - he talks about load / unload. Then separate AppDomains are simply the only way to go. The ONLY unit you can ever unload in a .NET application - besides the complete process - is the AppDomain. This IS tricky at times (try opening a window in a separate AppDomain and have it behave like a dialog - not exactly trivial under all circumstances - but then, this is simply the only way. But then, for this you need the requirement to be able to UNLOAD the plugins. Scrap this, and basically all complexities go overboard and you really are better on just loading the plugins into your main appdomain.
  2. [.net] Dispose questions

    ::Ok thanks. I changed it to: :: ::protected override void Dispose() ::{ ::Dispose(true); ::} That is already the complete error. Excuse me, but WHY THE HECK ARE YOU OVERRIDING Dispose? You do nothing there. There is no need for you to declare IDispose, nor to override it. Just take the IDispose delaration out of your class (after all, the class already does implement IDispose), and scrap the override, and the error disappears. Now, if you would have a reason to override Dispose you would be in a problem - basically a Dispose method in a non-sealed class should always be virtual, to facilitate later extension. But in your case your code says you do not do anything in Dispose that the base class does not do, so you can easily work around this.
  3. AppDomain is the only way to go. Your requirement of unloading every plugin demands it.
  4. ::All downloads on MSDN and even MSDN Subscriber downloads have only the Feb ::CTP as the latest version to download. The March CTP was uploaded a long time ago - more than a week. And it does identify itself as Beta 2 - it still is a CTP, but basically pretty short before the coming B2 release. [edit] Washu: you're annoying. [Edited by - Washu on March 28, 2005 11:36:46 PM]
  5. No, langauge can not affect float parsing, it DOES so. In germany, for example, this is 1005.33: 1.005,33 When parsing user input, let it as it is - the user expects input and output in HIS langauge. When saving stuff to disc or reading configuraiton, use the invariant culture which is there for exactly this reason. Edited by evolutional - removed condescending anti-american remarks [Edited by - evolutional on March 26, 2005 4:40:33 AM]
  6. Exactly. It is either early beta (beta 1) or even less tested CTP (Community Tech Preview) builds. They explicitly warn to install on any system that you may need further on. Some of the CTP-Builds vwere VERY dirty uninstalling - like killing the IIS control applets. This is the price of working with early software. We do it now like this: Either the developer has a second hard disc, and is booting into an image ONLY FOR VS.NET 2005 previews. Of this image hs has a Ghost-image right before installing VS.NET - which means he can roll back in 5 minutes. OR The developer works on a simulated system using MS Virtual Server, in which case the rollback takes also only 5 minutes. I ncase of ANY error we just reinstall. In case of a new test-build we just reinsta. It warns explicitly that this is early software and you may not be able to uninstall. Fucking up your system is the price you pay for your idiocy, then, to not honor this warning. After all, this is early beta software.
  7. [.net] Easy Threading Question

    Quote:Original post by Geronimo2000 OK, thanks - is there one function I can call that will basically call Thread.Abort() on all the threads I have spawned in my application. This would be very helpful in some situations by allowing me to spawn a thread and not keep it in a global list. No, it would not. It would seem helpfull UNTIL you delete the one thread you were not aware of (that was maybe started by a component) and fuck up your program and spend months figuring out what happens. You assume, falsely, that all threads are from you.
  8. Resintall your computer. Or better. the csecondary partition you installed V.NET 2005 on (and for which you have a backup image from the moment before). You don't? Take it as a lesson not to install software on an important system that tells you not to install it on an important system. I run VS.NET 2005 from a second boot partition and have a GHOSTed image from the moment right before installing it. Same for all developers here that already use VS.NET 2005 in a production environment (we already port our code) - or they work from a virtual system.
  9. [.net] IClonable?

    ::Though I wouldn't go as far as to call it a hack (it works very well and ::consistantly) It is a hack. If you would work for our company I would immediatly suspend you from your project and send you to a discussion about code quality ethics. Combined with a waarning that such code quality results in termination of the work contract if repeated. ::If you don't have time to implement a better clone and all you need to do is ::test something out, though, the serialization method is a quick and easy way ::to do that. If you do not have the time to do something proper, then change your work habits. Even short term doing it right is faster than doing it twice. Some people need to learn this the hard way (loosing job). At least I work in an environment where we think FIRST about what the optimal way is. And implementing a clone-operation memberwise is trivial (one line of code), Deep-Copy demends only that you pull down a manual clone of variables below. This can - if I need it more often - be fuly automated with a VS.NET addin using DOM to figure out what local variables exist.
  10. [.net] IClonable?

    That is not a trick it is a hack. A terribly memory hog, dead slow.
  11. ::Mutex, your idea does sound like it would be ok but unfortuanatly I do not ::have access to a managed C++ compiler. How comes? Isnt't a C++ compiler part of the .NET framework? Without a maanged C++ compiler you are - sorry - fucked. Interop sis limited and ina lot of situations turns into a pain. Managed C++ is THE solution to make a separate DLL that exposes .NET classes and talks "native" to the underlying engine. Been there, tried, cured - in my case it was the attempt to use the standard ISDN-interface from C# which resulted in tons of hardly maintainable code. Or to use DIrectShow (low level) - same result. Managed C++ is painless on these API's. Get a managed C++ compiler.
  12. ::I could register each Form in a list when it is made, but I viewed this as an ::inferior solution Delusion. This is the superior solution.
  13. Can not comment on this - I have dumped this VS integrated installer ages ago. I am currently using WISE (professional), abouta 1000 USD investment. But there is WIX (open source from microsoft) which is an install builder that supposedly is on a professional level, and it has a full Visual Studio integration. I am not so sure it can handle the download-aspect yet, but at least it is miles ahead of this crap that VS.NET ships with initially.
  14. Quote:This only applies if your selling the game in stores. If it is an online game, the user shouldn't have to download an extra 20 mb just because he/she might not have the framework. Then do not download it. The software we make has an installer that checks and downloads components "as needed". Including the .NET framework.
  15. No, I assumed MSDE - which is not enterprise level. I am sorry. Surely SQL Server IS an enterprise level database - imho it is the best one. Oracle is higher in scalability, but on a level extremely rarely needed (as is Db2), so for 99% of the cases SQL Server is the best possible solution. What exactly do you run there? Standard or Enterprise edition? If you run a REAL MS SQL 2000 (not the MSDE), then the replication model can do what you want, especially for the enterprise thing. In the program, though , I would manage this as TWO database connections - one used for wriing. This has the advantage of avoiding the replication mechanism in case the write is pushed to the slave. Otherwise you basically talk of a replication that is running in the background all the time - this can be set up with sql server 2000, and it is pretty near time. Note that this means pretty near time, there IS a delay (after all, we talk about replication, not shared operation). Make sure your application can handle this, logically.