I am currently using a static delegate in a wrapper class for a C dll to avoid that the delegate, which points to a unsafe function, gets garbaged collected.
This was working fine until I have now the requirement to support multiple instances of the class. A workaround might be to keep a list of the static delegates, but I would like to find a simpler solution.
C#: Saving a delegate from garbage collection (static no option)
1.8k views Asked by weismat At
2
There are 2 answers
Related Questions in C#
- How to call a C language function from x86 assembly code?
- What does: "char *argv[]" mean?
- User input sanitization program, which takes a specific amount of arguments and passes the execution to a bash script
- How to crop a BMP image in half using C
- How can I get the difference in minutes between two dates and hours?
- Why will this code compile although it defines two variables with the same name?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Why can't I use the file pointer after the first read attempt fails?
- #include Header files in C with definition too
- OpenCV2 on CLion
- What is causing the store latency in this program?
- How to refer to the filepath of test data in test sourcecode?
- 9 Digit Addresses in Hexadecimal System in MacOS
- My server TCP doesn't receive messages from the client in C
- Printing the characters obtained from the array s using printf?
Related Questions in DELEGATES
- What is the purpose of the keyword "by" (property delegates) when declaring a MutableState<T> with remember?
- How to dispose delegate in blazor or c#
- What is the difference between "Action<object?, EventArgs>" and "EventHandler(object? sender, EventArgs e)"?
- Function pointer on generic class delegate
- Unable to call main function in VS 2022
- Error when casting System.Action using contravariance in C#
- Multiple instances using delegates in unity c#
- View Modifier Doesn't Update @State
- initialization order with delegates and multiple view controllers is not working
- Delegate does not trigger method
- Persuading Kestrel to log my preferred handler name instead of "Wrapper"
- If I have an inline expression, will all references to that expression be the same for the lifetime of an application?
- Memory Leak caused by Roslyn, how do I contain it?
- Delegate to an instance method cannot have null 'this' discord.net
- QTreeView, how to use the enabled sibling column's background colour in disabled column in delegate paint method
Related Questions in GARBAGE-COLLECTION
- Java SoftReference: Soft references were not collected before the occurrence of OOM
- Would event listeners prevent garbage collecting objects referenced in outer function scopes?
- How to prevent R from slowing down in long analysis besides freeing up memory?
- change GC in quarkus jib build docker container
- What is 'MarkDependentCodeForDeoptimization()' used for in V8's Mark-Compact phase?
- Is my closure in an expressjs middlware causing a memory leak?
- Why do different delivery methods have different results when applying PHP's global keyword?
- Comment optimiser l'utilisation des resources mémoires (RAM) sur flutter?
- The way Elasticsearch deals with control heap memory when indexing documents
- Is it possible for a .net core app run 2 different GC modes at the same time?
- Why do we need the finalizer in the disposable pattern if it is not guaranteed that it will be called by the garbage collector?
- Out of memory in clojure - Nested reduce on Lazy Sequence
- Why does process memory grow in .Net, but managed heap size does not change?
- What is wrong with this Reflection.Emit for value conversion delegates?
- Python, How to stop tkinter variables from being garbage-collected?
Related Questions in UNSAFE-POINTERS
- Using imported C functions in Swift
- Mysterious error: "cgo argument has Go pointer to unpinned Go pointer"
- How to prevent panic in Go while stack expands and encounters invalid address in unsafe.Pointer?
- Why I cannot use extern functions in fixed statement?
- What escapes to the heap?
- In Swift's Unsafe API, how can I allocate memory and fail with error but without crash when asking for too much?
- Is this use of unsafe.Pointer OK?
- Cgo: Write memory in C allocated by Go
- Passing pointer argument to unsafe.Pointer: found bad pointer in Go heap
- How to properly translate C code to UnsafeSwift
- How to get C char * string value in swift?
- How do i pass uintptr to unsafe.Pointer() satisfying govet
- Casting []uint32 to []byte without copying in golang
- Printing the real value of an UnsafeMutablePointer<Int>?
- C# working with generic array using unsafe
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
To keep an object from being collected, you must maintain a reference to it.
Static members in static classes live for application lifetime.
For instance class members, depending on your class design and project design, you may take different approaches. Maintaining a static list may not be a bad idea.
My only question is how are you able to figure that the delegate is being collected. Because, if you are able to access it, then you must have maintained a reference of it. In which case, it must have stayed in memory.