Search Results

Search found 23792 results on 952 pages for 'void pointers'.

Page 147/952 | < Previous Page | 143 144 145 146 147 148 149 150 151 152 153 154  | Next Page >

  • The Cleanest Reset for ARM Processor

    - by waffleman
    Lately, I've been cleaning up some some C code that runs on an ARM7 controller. In some situations (upgrade, fatal error, etc...) the program will perform a reset. Presently it just jumps to 0 and assumes that the start-up code will reinitialize everything correctly. It got me to thinking about what would be the best procedure a la "Leave No Trace" for an ARM reset. Here is my first crack at it: void Reset(void) { /* Disable interrupts */ __disable_interrupts(); /* Reset peripherals, externals and processor */ AT91C_BASE_RSTC->RSTC_RCR = AT91C_RSTC_KEY | AT91C_RSTC_PERRST | AT91C_RSTC_EXTRST| AT91C_RSTC_PROCRST; while(AT91C_BASE_RSTC->RSTC_RSR & AT91C_RSTC_SRCMP); /* Jump to the reset vector */ (*(void(*)())0)(); } Anything I haven't considered?

    Read the article

  • C#: How to inherit constructors?

    - by Ian Boyd
    Imagine a base class with many constructors and a virtual method public class Foo { ... public Foo() {...} public Foo(int i) {...} ... public virtual void SomethingElse() {...} ... } and now I want to create a descendant class that overrides the virtual method: public class Bar : Foo { public override void SomethingElse() {...} } And another descendant that does some more stuff: public class Bah : Bar { public void DoMoreStuff() {...} } Do I really have to copy all constructors from Foo into Bar and Bah? And then if I change a constructor signature in Foo, do I have to update it in Bar and Bah? Is there no way to inherit constructors? Is there no way to encourage code reuse?

    Read the article

  • ArrayList access

    - by Ricky McQuesten
    So once again I have a question about this program. I want to store transactions that are made in an arraylist and then have an option in the case menu where I can print out those that are stored. I have been researching online and have been unable to find a solution to this, so is this possible and how would I go about doing this? I also want to attach a timestamp to each transaction as well. Here is the code I have so far. So my question is how would I add a timestamp to each withdrawal or deposit, and how would I store each transaction in array list? import java.util.*; public class BankAccount extends Money { //inheritence static String name; public static int acctNum; public static double balance, amount; BankAccount(String name, int accNo, double bal) { this.name = name; this.acctNum = accNo; this.balance = bal; } void display() { System.out.println("Your Name:" + name); System.out.println("Your Account Number:" + acctNum); System.out.println("Your Current Account Balance:" + Money.getBalance()); } void displayBalance() { System.out.println("Balance:" + balance); } } import java.util.Scanner; /** * * @author Ricky */ public class Money { public static int accountNumber; public static double balance; static double amount; static String name; public void setDeposit(double amount) { balance = balance + amount; if (amount < 0) { System.out.println("Invalid"); } } public double getDeposit() { return 1; } public void setBalance(double b) { balance = b; } public static double getBalance() { return balance; } public void setWithdraw(double amount) { if (balance < amount) { System.out.println("Not enough funds."); } else if(amount < 0) { System.out.println("Invalid"); } else { balance = balance - amount; } } public double getWithdraw() { return 1; } } import java.util.*; public class Client { public static void main(String args[]) { int n = 0; int count; String trans; ArrayList<String> transaction= new ArrayList<String>(n); Scanner input = new Scanner(System.in); System.out.println("Welcome to First National Bank"); System.out.println("Please enter your name: "); String cusName = input.nextLine(); System.out.println("You will now be assigned an account number."); Random randomGenerator = new Random(); int accNo = randomGenerator.nextInt(100000); //random number System.out.println("Your account number is: " + accNo); System.out.println("Please enter your initial account balance: "); Double balance = input.nextDouble(); BankAccount b1 = new BankAccount(cusName, accNo, balance); b1.setBalance(balance); int menu; /*System.out.println("Menu"); System.out.println("1. Deposit Amount"); System.out.println("2. Withdraw Amount"); System.out.println("3. Display Information"); System.out.println("4. Exit");*/ boolean quit = false; do { System.out.println("*******Menu*******"); System.out.println("1. Deposit Amount"); // menu to take input from user System.out.println("2. Withdraw Amount"); System.out.println("3. Display Information"); System.out.println("4. Exit"); System.out.print("Please enter your choice: "); menu = input.nextInt(); switch (menu) { case 1: System.out.print("Enter depost amount:"); b1.setDeposit(input.nextDouble()); b1.getDeposit(); transaction.add(trans); break; case 2: System.out.println("Current Account Balance=" + b1.getBalance()); System.out.print("Enter withdrawal amount:"); b1.setWithdraw(input.nextDouble()); b1.getWithdraw(); transaction.add(trans); break; // switch statments to do a loop case 3: b1.display(); break; case 4: quit = true; break; } } while (!quit); } } public class Date { static Date time = new Date(); }

    Read the article

  • Declaring a function inside a function?

    - by nunos
    I have came across the following code, and being a c beginner, I came here for your help. This function is from a c implmentation of a queue. Bool queuePut(Queue *q, char c) { void beep(); if (queueFull(q)) { beep(); return false; } //do stuff return true; } So, I am getting a strange error with gcc on the void beep(). Can someone please explain me what is this, declaring a function inside a function. Or is it the void beep() simply out of place? I was given this code and there's always the possibility that it isn't correct. Thanks.

    Read the article

  • A question about friend functions

    - by Als
    I faced a problem recently with a 3rd party library which generates classes from a xml. Here is a gist of it: class B; class A { void doSomething(); friend class B; }; class B { void doSomething(); void doSomethingMore() { doSomething(); } }; The compiler flags call to the function doSomething() as ambiguous and flags it as an compiler error. It is easy to understand why it gives the error.Class B being friend of class A, every member of class B has access to all the members of class A. Renaming of the either of functions resolved my problem but it got me thinking that shouldn't in this case the compiler should give a priority to the class's own member function over the function in another class of which it is a friend?

    Read the article

  • How are video card\graphics drivers written exactly? [closed]

    - by Bigyellow Bastion
    I was thinking, since I want an application layer for my operating system, how or what would be the best way to write, or better understand how to write, my own graphics device drivers or software to enable application layered software to request data through my graphics system (I.e. windows, icons, mouse pointers). I don't need every little detail, I'd just like some possible insight on the procedure one may accomplish this feat in, perhaps the best way to understand the interaction between the graphics GUI rendering software to the hardware interaction directly, and the application software requesting the graphics driver itself.

    Read the article

  • Are multiply-thrown Exceptions checked or runtime?

    - by froadie
    I have an Exception chain in which method1 throws an Exception to method2 which throws the Exception on to main. For some reason, the compiler forces me to deal with the error in method2 and marks it as an error if I don't, indicating that it's a checked Exception. But when the same Exception is thrown further down the line to main, the compiler allows me to ignore it and doesn't display any errors. The original Exception in method1 is a ParseException, which is checked. But the method has a generic throws Exception clause in the header, and the same object is thrown to method2, which has an identical throws Exception clause. When and how does this Exception lose the status of being checked / caught by the compiler? Edited to clarify: public void method1() throws Exception{ // code that may generate ParseException } public void method2() throws Exception{ method1(); //compiler error } public static void main(String[] args){ method2(); //ignored by compiler }

    Read the article

  • NHibernate - EventListener for SaveOrUpdateCopy

    - by t-kehl
    Hi. I do Update with SaveOrUpdateCopy(). Now, I have attached an event for this: this.EventListeners.SaveOrUpdateCopyEventListeners = new IMergeEventListener[] { new AuditableSaveOrUpdateCopyEventListener() }; In the AuditableSaveOrUpdateCopyEventListener, I have inherited from DefaultSaveOrUpdateCopyEventListener and overriden OnMerge(): public class AuditableSaveOrUpdateCopyEventListener : DefaultSaveOrUpdateCopyEventListener { public override void OnMerge(MergeEvent evt) { this.AddAuditableData(evt); base.OnMerge(evt); } public override void OnMerge(MergeEvent evt, System.Collections.IDictionary copyCache) { this.AddAuditableData(evt); base.OnMerge(evt, copyCache); } private void AddAuditableData(MergeEvent evt) { var entity = evt.Original as AuditableEntityBase; if (entity != null) { ... } } } But when I now change properties in entity, they will not be saved to the database. Can someone give me a tip, how I can add my auditable-data for SaveOrUpdateCopy? Thank you. Best Regards, Thomas

    Read the article

  • Math > Logic for a Logarithmic Score Meter

    - by oodavid
    I'm trying to implement a score meter whereby I specify a maximum value (say 15,000) and I can render values on it in a logarithmic manner ie: +------+---+--+-++ +------+---+--+-++ |== | |====== | +------+---+--+-++ +------+---+--+-++ 200 pts 1,000 pts +------+---+--+-++ +------+---+--+-++ |============= | |================| +------+---+--+-++ +------+---+--+-++ 5,000 pts 15,000 pts + The upper bound needs to be variable, and need to be able to convert a score to a percentage, using the above mockup as an example: score2pct(15000, 200) = 0.2 score2pct(15000, 1000) = 0.4 score2pct(15000, 5000) = 0.8 score2pct(15000, 15000) = 1 Does anyone have any pointers for me?

    Read the article

  • Bind texture with pinned mapped memory in CUDA

    - by sjchoi
    I was trying to bind a host memory that was mapped for zero-copy to a texture, but it looks like it isn't possible. Here is a code sample: float* a; float* d_a; cudaSetDeviceFlags(cudaDeviceMapHost); cudaHostAlloc( (void **)&a, bytes, cudaHostAllocMapped); cudaHostGetDevicePointer((void **)&d_a, (void *)a, 0); texture<float, 2, cudaReadModeElementType> tex; cudaBindTexture2D( 0, &tex, d_a, &channelDesc, width, height, pitch); Is it recommended that you used pinned memory and just copy it over to device memory that is bind to texture?

    Read the article

  • Can I "inherit" a delegate? Looking for ways to combine Moq and MSpec without conflicts around It...

    - by Tomas Lycken
    I have started to use MSpec for BDD, and since long ago I use Moq as my mocking framework. However, they both define It, which means I can't have using Moq and using Machine.Specifications in the same code file without having to specify the namespace explicitly each time I use It. Anyone who's used MSpec knows this isn't really an option. I googled for solutions to this problem, and this blogger mentions having forked MSpec for himself, and implemented paralell support for Given, When, Then. I'd like to do this, but I can't figure out how to declare for example Given without having to go through the entire framework looking for references to Establish, and changing code there to match that I want either to be OK. For reference, the Establish, Because and It are declared in the following way: public delegate void Establish(); public delegate void Because(); public delegate void It(); What I need is to somehow declare Given, so that everywhere the code looks for an Establish, Given is also OK.

    Read the article

  • Alert dialog is gone before the user see anything

    - by Android Developer
    PopIt("Exit Application", "Are you sure you want to exit?"); public void PopIt( String title, String message ){ new AlertDialog.Builder(this) .setTitle( title ) .setMessage( message ) .setPositiveButton("YES", new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { //do stuff onclick of YES finish(); } }).setNegativeButton("NO", new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { //do stuff onclick of CANCEL Toast.makeText(getBaseContext(), "You touched CANCEL", Toast.LENGTH_SHORT).show(); } }).show(); } this alert dialog gone so fast as I cant read or click on it !! why is that ?

    Read the article

  • Condition Variable in Shared Memory - is this code POSIX-conformant?

    - by GrahamS
    We've been trying to use a mutex and condition variable to synchronise access to named shared memory on a LynuxWorks LynxOS-SE system (POSIX-conformant). One shared memory block is called "/sync" and contains the mutex and condition variable, the other is "/data" and contains the actual data we are syncing access to. We're seeing failures from pthread_cond_signal() if both processes don't perform the mmap() calls in exactly the same order, or if one process mmaps in some other piece of shared memory before it mmaps the sync memory. This example code is about as short as I can make it: #include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h> #include <sys/file.h> #include <stdlib.h> #include <pthread.h> #include <errno.h> #include <iostream> #include <string> using namespace std; static const string shm_name_sync("/sync"); static const string shm_name_data("/data"); struct shared_memory_sync { pthread_mutex_t mutex; pthread_cond_t condition; }; struct shared_memory_data { int a; int b; }; //Create 2 shared memory objects // - sync contains 2 shared synchronisation objects (mutex and condition) // - data not important void create() { // Create and map 'sync' shared memory int fd_sync = shm_open(shm_name_sync.c_str(), O_CREAT|O_RDWR, S_IRUSR|S_IWUSR); ftruncate(fd_sync, sizeof(shared_memory_sync)); void* addr_sync = mmap(0, sizeof(shared_memory_sync), PROT_READ|PROT_WRITE, MAP_SHARED, fd_sync, 0); shared_memory_sync* p_sync = static_cast<shared_memory_sync*> (addr_sync); // init the cond and mutex pthread_condattr_t cond_attr; pthread_condattr_init(&cond_attr); pthread_condattr_setpshared(&cond_attr, PTHREAD_PROCESS_SHARED); pthread_cond_init(&(p_sync->condition), &cond_attr); pthread_condattr_destroy(&cond_attr); pthread_mutexattr_t m_attr; pthread_mutexattr_init(&m_attr); pthread_mutexattr_setpshared(&m_attr, PTHREAD_PROCESS_SHARED); pthread_mutex_init(&(p_sync->mutex), &m_attr); pthread_mutexattr_destroy(&m_attr); // Create the 'data' shared memory int fd_data = shm_open(shm_name_data.c_str(), O_CREAT|O_RDWR, S_IRUSR|S_IWUSR); ftruncate(fd_data, sizeof(shared_memory_data)); void* addr_data = mmap(0, sizeof(shared_memory_data), PROT_READ|PROT_WRITE, MAP_SHARED, fd_data, 0); shared_memory_data* p_data = static_cast<shared_memory_data*> (addr_data); // Run the second process while it sleeps here. sleep(10); int res = pthread_cond_signal(&(p_sync->condition)); assert(res==0); // <--- !!!THIS ASSERT WILL FAIL ON LYNXOS!!! munmap(addr_sync, sizeof(shared_memory_sync)); shm_unlink(shm_name_sync.c_str()); munmap(addr_data, sizeof(shared_memory_data)); shm_unlink(shm_name_data.c_str()); } //Open the same 2 shared memory objects but in reverse order // - data // - sync void open() { sleep(2); int fd_data = shm_open(shm_name_data.c_str(), O_RDWR, S_IRUSR|S_IWUSR); void* addr_data = mmap(0, sizeof(shared_memory_data), PROT_READ|PROT_WRITE, MAP_SHARED, fd_data, 0); shared_memory_data* p_data = static_cast<shared_memory_data*> (addr_data); int fd_sync = shm_open(shm_name_sync.c_str(), O_RDWR, S_IRUSR|S_IWUSR); void* addr_sync = mmap(0, sizeof(shared_memory_sync), PROT_READ|PROT_WRITE, MAP_SHARED, fd_sync, 0); shared_memory_sync* p_sync = static_cast<shared_memory_sync*> (addr_sync); // Wait on the condvar pthread_mutex_lock(&(p_sync->mutex)); pthread_cond_wait(&(p_sync->condition), &(p_sync->mutex)); pthread_mutex_unlock(&(p_sync->mutex)); munmap(addr_sync, sizeof(shared_memory_sync)); munmap(addr_data, sizeof(shared_memory_data)); } int main(int argc, char** argv) { if(argc>1) { open(); } else { create(); } return (0); } Run this program with no args, then another copy with args, and the first one will fail at the assert checking the pthread_cond_signal(). But change the open() function to mmap() the "/sync" memory first and it will all work fine. This seems like a major bug in LynxOS but LynuxWorks claim that using mutex and condition variable in this way is not covered by the POSIX standard, so they are not interested. Can anyone determine if this code does violate POSIX? Or does anyone have any convincing documentation that it is POSIX compliant?

    Read the article

  • Threading and pcap issues.

    - by cftmon
    I have a GUI program that allows a user a scan a network, the issue is that when the pcap_loop function is called, my GUI program becomes unresponsive.(the pcap_loop blocks the current thread). When i try to use pthreads, i got a SIGSEGV fault at the pcap_loop function.Why?It's as if the thread can't see the procPacket function itself. void procPacket(u_char *arg, const struct pcap_pkthdr *pkthdr, const u_char *packet) { //show packets here } void* pcapLooper(void* param) { pcap_t* handler = (pcap_t*) param; pcap_loop(handler, 900 ,procPacket, NULL ); } //some function that runs when a button is pressed //handler has been opened through pcap_open_live pthread_t scanner; int t = pthread_create(&scanner,NULL,&pcapLooper, &handler ); if(t) { std::cout << "failed" << std::endl; } pthread_join(scanner,NULL); //do other stuff.

    Read the article

  • Using C++, how to call a base class method from a derived class method and apply this to an object passed as an argument?

    - by Chris
    I can't figure out how to call a base class method from a derived class method but concurrently applying this method call at an object passed as argument. What I mean is this: class Animal { virtual void eat(Animal& to_be_eaten) = 0; }; class Carnivores: public Animal { virtual void eat(Animal& to_be_eaten) { /*implementation here*/} }; class Wolf : public Carnivores { virtual void eat(Animal& to_be_eaten) { /*call eat method(of Base class) of Base to_be_eaten here*/ } } I thought of something like this dynamic_cast<Carnivores&>(to_be_eaten).eat(*this) //and got a segmentation fault Is there any way for this to be done? Thank you! New edit:: Updated the code

    Read the article

  • C++ Operator overloading - 'recreating the Vector'

    - by Wallter
    I am currently in a collage second level programing course... We are working on operator overloading... to do this we are to rebuild the vector class... I was building the class and found that most of it is based on the [] operator. When I was trying to implement the + operator I run into a weird error that my professor has not seen before (apparently since the class switched IDE's from MinGW to VS express...) (I am using Visual Studio Express 2008 C++ edition...) Vector.h #include <string> #include <iostream> using namespace std; #ifndef _VECTOR_H #define _VECTOR_H const int DEFAULT_VECTOR_SIZE = 5; class Vector { private: int * data; int size; int comp; public: inline Vector (int Comp = 5,int Size = 0) : comp(Comp), size(Size) { if (comp > 0) { data = new int [comp]; } else { data = new int [DEFAULT_VECTOR_SIZE]; comp = DEFAULT_VECTOR_SIZE; } } int size_ () const { return size; } int comp_ () const { return comp; } bool push_back (int); bool push_front (int); void expand (); void expand (int); void clear (); const string at (int); int operator[ ](int); Vector& operator+ (Vector&); Vector& operator- (const Vector&); bool operator== (const Vector&); bool operator!= (const Vector&); ~Vector() { delete [] data; } }; ostream& operator<< (ostream&, const Vector&); #endif Vector.cpp #include <iostream> #include <string> #include "Vector.h" using namespace std; const string Vector::at(int i) { this[i]; } void Vector::expand() { expand(size); } void Vector::expand(int n ) { int * newdata = new int [comp * 2]; if (*data != NULL) { for (int i = 0; i <= (comp); i++) { newdata[i] = data[i]; } newdata -= comp; comp += n; delete [] data; *data = *newdata; } else if ( *data == NULL || comp == 0) { data = new int [DEFAULT_VECTOR_SIZE]; comp = DEFAULT_VECTOR_SIZE; size = 0; } } bool Vector::push_back(int n) { if (comp = 0) { expand(); } for (int k = 0; k != 2; k++) { if ( size != comp ){ data[size] = n; size++; return true; } else { expand(); } } return false; } void Vector::clear() { delete [] data; comp = 0; size = 0; } int Vector::operator[] (int place) { return (data[place]); } Vector& Vector::operator+ (Vector& n) { int temp_int = 0; if (size > n.size_() || size == n.size_()) { temp_int = size; } else if (size < n.size_()) { temp_int = n.size_(); } Vector newone(temp_int); int temp_2_int = 0; for ( int j = 0; j <= temp_int && j <= n.size_() && j <= size; j++) { temp_2_int = n[j] + data[j]; newone[j] = temp_2_int; } //////////////////////////////////////////////////////////// return newone; //////////////////////////////////////////////////////////// } ostream& operator<< (ostream& out, const Vector& n) { for (int i = 0; i <= n.size_(); i++) { //////////////////////////////////////////////////////////// out << n[i] << " "; //////////////////////////////////////////////////////////// } return out; } Errors: out << n[i] << " "; error C2678: binary '[' : no operator found which takes a left-hand operand of type 'const Vector' (or there is no acceptable conversion) return newone; error C2106: '=' : left operand must be l-value As stated above, I am a student going into Computer Science as my selected major I would appreciate tips, pointers, and better ways to do stuff :D

    Read the article

  • Can't Use Generic C# Class in Using Statement

    - by Eric J.
    I'm trying to use a generic class in a using statement but the compiler can't seem to treat it as implementing IDisposable. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Objects; namespace Sandbox { public sealed class UnitOfWorkScope<T> where T : ObjectContext, IDisposable, new() { public void Dispose() { } } public class MyObjectContext : ObjectContext, IDisposable { public MyObjectContext() : base("DummyConnectionString") { } #region IDisposable Members void IDisposable.Dispose() { throw new NotImplementedException(); } #endregion } public class Consumer { public void DoSomething() { using (new UnitOfWorkScope<MyObjectContext>()) { } } } } Compiler error is: Error 1 'Sandbox.UnitOfWorkScope<Sandbox.MyObjectContext>': type used in a using statement must be implicitly convertible to 'System.IDisposable' I implemented IDisposable on UnitOfWorkScope (and to see if that was the problem, also on MyObjectContext). What am I missing?

    Read the article

  • Inheriting the main method

    - by Eric
    I want to define a base class that defines a main method that instantiates the class, and runs a method. There are a couple of problems though. Here is the base class: public abstract class Strategy { abstract void execute(SoccerRobot robot); public static void main(String args) { Strategy s = new /*Not sure what to put here*/(); s.execute(new SoccerRobot()) } } And here is an example derived class: public class UselessStrategy { void execute(SoccerRobot robot) { System.out.println("I'm useless") } } It defines a simple execute method, which should be called in a main method upon usage as a the main application. However, in order to do so, I need to instantiate the derived class from within the base class's main method. Which doesn't seem to be possible. I'd rather not have to repeat the main method for every derived class, as it feels somewhat unnessary. Is there a right way of doing this?

    Read the article

  • How to pass an event to a method and then subscribe to it?

    - by Ryan Peschel
    Event Handler public void DeliverEvent(object sender, EventArgs e) { } #1: This Works public void StartListening(Button source) { source.Click += DeliverEvent; } #2: And so does this.. public void StartListening(EventHandler eventHandler) { eventHandler += DeliverEvent; } But in #2, you cannot call the method because if you try something like this: StartListening(button.Click); You get this error: The event 'System.Windows.Forms.Control.Click' can only appear on the left hand side of += or -= Is there any way around that error? I want to be able to pass the event and not the object housing the event to the StartListening method.

    Read the article

  • Understanding the concept of inheritance in Java

    - by Nirmal
    Hello All.... I am just refreshing the oops features of the java. So, I have a little confusion regarding inheritance concept. For that I have a following sample code : class Super{ int index = 5; public void printVal(){ System.out.println("Super"); } } class Sub extends Super{ int index = 2; public void printVal(){ System.out.println("Sub"); } } public class Runner { public static void main(String args[]){ Super sup = new Sub(); System.out.println(sup.index+","); sup.printVal(); } } Now above code is giving me output as : 5,Sub. Here, we are overriding printVal() method, so that is understandable that it is accessing child class method only. But I could not understand why it's accessing the value of x from Super class... Thanks in advance....

    Read the article

  • How to write in an file in MSIL code

    - by Thomas
    Hi all, I have a aspx webpage which uses an assembly mine (which mades a custom authentification). I would like to modify MSIL code (so just with ILDASM/ILASM tools) of my assembly in order to log something in a file. I have tried to add this at the end of the authentification method of my assembly : IL_0034: ldstr "C:\\path_to_my_website\\log.txt" IL_0039: newobj instance void [mscorlib]System.IO.StreamWriter::.ctor(string) IL_003e: stloc.1 IL_003f: ldloc.1 IL_0040: ldstr "test" IL_0045: callvirt instance void [mscorlib]System.IO.TextWriter::Write(string) IL_004a: nop IL_004b: ldloc.1 IL_004c: callvirt instance void [mscorlib]System.IO.TextWriter::Close() IL_0051: nop ILASM does not find any error, and the CLR does not throw any exception at runtime, but the file is not created or modified ! :( Any idea ?

    Read the article

  • How to implement cancellable worker thread

    - by Arnold Zokas
    Hi, I'm trying to implement a cancellable worker thread using the new threading constructs in System.Threading.Tasks namespace. So far I have have come up with this implementation: public sealed class Scheduler { private CancellationTokenSource _cancellationTokenSource; public System.Threading.Tasks.Task Worker { get; private set; } public void Start() { _cancellationTokenSource = new CancellationTokenSource(); Worker = System.Threading.Tasks.Task.Factory.StartNew( () => RunTasks(_cancellationTokenSource.Token), _cancellationTokenSource.Token ); } private static void RunTasks(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { Thread.Sleep(1000); // simulate work } } public void Stop() { try { _cancellationTokenSource.Cancel(); Worker.Wait(_cancellationTokenSource.Token); } catch (OperationCanceledException) { // OperationCanceledException is expected when a Task is cancelled. } } } When Stop() returns I expect Worker.Status to be TaskStatus.Canceled. My unit tests have shown that under certain conditions Worker.Status remains set to TaskStatus.Running. Is this a correct way to implement a cancellable worker thread?

    Read the article

  • C++ -- typedef "inside" template arguments?

    - by redmoskito
    Imagine I have a template function like this: template<Iterator> void myfunc(Iterator a, Iterator::value_type b) { ... } Is there a way to declare a typedef for Iterator::valuetype that I can use in the function signature? For example: template< typename Iterator, typedef Iterator::value_type type> void myfunc(Iterator a, type b) { ... } Thus far, I've resorted to using default template arguments and Boost concept checking to ensure the default is always used: template< typename Iterator, typename type = Iterator::value_type > void myfunc(Iterator a, type b) { BOOST_STATIC_ASSERT(( boost::type_traits::is_same< typename Iterator::value_type, type >::value )); ... } ...but it would be nice if there was support in the language for this type of thing.

    Read the article

  • When do I need to deallocate memory?

    - by extintor
    I am using this code inside a class to make a webbrowser control visit a website: void myClass::visitWeb(const char *url) { WCHAR buffer[MAX_LEN]; ZeroMemory(buffer, sizeof(buffer)); MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, url, strlen(url), buffer, sizeof(buffer)-1); VARIANT vURL; vURL.vt = VT_BSTR; vURL.bstrVal = SysAllocString(buffer); // webbrowser navigate code... VariantClear(&vURL); } I call visitWeb from another void function that gets called on the handlemessage() for the app. Do I need to do some memory deallocation here?, I see vURL is being deallocated by VariantClear but should I deallocate memory for buffer? I've been told that in another bool I have in the same app I shouldn't deallocate anything because everything clear out when the bool return true/false, but what happens on this void?

    Read the article

  • Comparison between pointer and integer (cocoa)

    - by Cal S
    Hi, I'm just learning cocoa (coming from C#) but I'm getting a strange error for something that seems really simple... (charsSinceLastUpdate=36) #import "CSMainController.h" @implementation CSMainController //global vars int *charsSinceLastUpdate = 0; NSString *myString = @"Hello world"; // - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { ... } //other functions - (void)textDidChange:(NSNotification *)aNotification { NSLog(@"charsSinceLastUpdate=%i",charsSinceLastUpdate); if (charsSinceLastUpdate>=36) { // <- THIS line returns the error: Comparison between pointer and integer charsSinceLastUpdate=0; [statusText setStringValue:@"Will save now!"]; } else { charsSinceLastUpdate++; [statusText setStringValue:@"Not saving"]; } } //my functions - (void)showNetworkErrorAlert:(BOOL)showContinueWithoutSavingOption { ... } // @end Any help would be appreciated, thanks!

    Read the article

< Previous Page | 143 144 145 146 147 148 149 150 151 152 153 154  | Next Page >