All the example I can find shows that I have to call .Complete() to get messages pushed to next node, I am wondering If I make BatchBlock Singlton, and have it receive messasges continuously, auto push messagses to next block when messasges reach batchsize? any downside of using BatchBlock this way?
Can I make TPL DataFlow BatchBlock Singleton?
524 Views Asked by yuahorse At
1
There are 1 best solutions below
Related Questions in TASK-PARALLEL-LIBRARY
- IP Address Range for Apple MDM service?
- Android apps without public ip address
- Chrome browser: Problems after upgrade with reading ip from etc/hosts of subdomains localhost
- Blocking traffic using .htaccess not working
- IP address to Domain Name? DNS?
- Store IP into mysql database
- how to setup IPs from different subnet on 1 network card, Centos 6.6
- Server not receiving TCP SYN packets
- bash - for loop for IP range excluding certain IPs
- MaxMind GeoIP City Returning Incorrect Lat Longs
Related Questions in TPL-DATAFLOW
- IP Address Range for Apple MDM service?
- Android apps without public ip address
- Chrome browser: Problems after upgrade with reading ip from etc/hosts of subdomains localhost
- Blocking traffic using .htaccess not working
- IP address to Domain Name? DNS?
- Store IP into mysql database
- how to setup IPs from different subnet on 1 network card, Centos 6.6
- Server not receiving TCP SYN packets
- bash - for loop for IP range excluding certain IPs
- MaxMind GeoIP City Returning Incorrect Lat Longs
Related Questions in DATAFLOW
- IP Address Range for Apple MDM service?
- Android apps without public ip address
- Chrome browser: Problems after upgrade with reading ip from etc/hosts of subdomains localhost
- Blocking traffic using .htaccess not working
- IP address to Domain Name? DNS?
- Store IP into mysql database
- how to setup IPs from different subnet on 1 network card, Centos 6.6
- Server not receiving TCP SYN packets
- bash - for loop for IP range excluding certain IPs
- MaxMind GeoIP City Returning Incorrect Lat Longs
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)
Popular # Hahtags
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?
The question is a bit weird, since the you don't have to create a new batch block each time. You create one instance and pump messages to it. That's what all tutorials and examples show.
Lets say you want to read files and send the contents to a database. You could use one block to read the file contents, another to batch records together and a final one that would send data to the database one batch at a time. This would look like this :
You have to explicitly specify that when one block completes, its linked blocks will also complete. That's what
PropagateCompletion
does. While this may seem a strange choice for a simple pipeline, TPL Dataflow is used to create arbitrarily complex meshes of steps. In this case you'd want to be able to control what gets completed when explicitly.Once we pump all files to the first block,
readerBlock
we tell it that we are finished. When that block finishes processing it will signal the next block in the pipeline.BatchBlock only sends messages when a batch is complete, in this case when it gathers 500 lines. The final batch will probably contain less lines. It would never be sent if
Complete()
wasn't called on it. WithPropagateCompletion
though, completion will propagage to BatchBlock and make it send the leftovers to the next block.Finally, we
await
theCompletion
task on the last block, to ensure all messages are written to the database